viewpager用法

来源:互联网 发布:淘宝网优惠 编辑:程序博客网 时间:2024/06/06 08:57
public class ViewPageActivity extends ActionBarActivity {    private View page;    private Button btnOK;    private ViewPager viewPager;    private ImageView imageView;    private ArrayList<View> pageViews;//存放每页要要显示的view    private ImageView[] imageViews;//存放小圆点    private ViewGroup viewPictures;    private ViewGroup viewPoints;    private SharedPreferences isfirst;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);         /*        在实际开发中LayoutInflater这个类还是非常有用的,        它的作用类似于findViewById()。不同点是LayoutInflater是用来找res/layout/下的xml布局文件,        并且实例化;而findViewById()是找xml布局文件下的具体widget控件(如Button、TextView等)。        利用getLayoutInflater()来实例化inflater         */        LayoutInflater inflater = getLayoutInflater();        //pageViews数组用来保存要分页显示的View(即每张图片的.xml布局文件)        pageViews=new ArrayList<View>();        //通过inflater.inflate(R.layout.viewpager01, null)来引入View        //并把它添加到pageViews数组中        pageViews.add(inflater.inflate(R.layout.viewpager01, null));        pageViews.add(inflater.inflate(R.layout.viewpager02,null));        pageViews.add(inflater.inflate(R.layout.viewpager03,null));        //动态创建存放小圆点的数组imageViews的大小,和保存几个View的数组pageViews的大小一致        imageViews=new ImageView[pageViews.size()];        /*布局文件viewpagers是显示pageViews和imageViews的载体,         即pageViews和imageViews所相关的控件都写在布局文件viewpagers中        */        viewPictures = (ViewGroup) inflater.inflate(R.layout.viewpagers, null);        //为图片viewPager和小圆点viewPoints设置监听事件        viewPager = (ViewPager) viewPictures.findViewById(R.id.guidePagers);        viewPoints = (ViewGroup) viewPictures.findViewById(R.id.viewPoints);        // 添加小圆点导航的图片,即动态添加ImageView        for (int i = 0; i < pageViews.size(); i++) {            imageView = new ImageView(ViewPageActivity.this);            imageView.setLayoutParams(new ViewGroup.LayoutParams(20, 20));            imageView.setPadding(5, 0, 5, 0);            // 把小圆点放进数组中            imageViews[i] = imageView;            // 默认选中的是第一张图片,此时第一个小圆点是选中状态,其他不是            if (i == 0)                imageViews[i].setImageDrawable(getResources().getDrawable(                        R.drawable.page_indicator_focused));            else                imageViews[i].setImageDrawable(getResources().getDrawable(                        R.drawable.page_indicator_unfocused));            // 将imageviews添加到小圆点视图组            viewPoints.addView(imageViews[i]);        }        //设置显示viewPictures        setContentView(viewPictures);        //设置适配器NavigationPageAdapter()继承自PagerAdapter()        viewPager.setAdapter(new NavigationPageAdapter());        // 为viewpager添加监听,当view发生滑动变化时的响应        //同样NavigationPageChangeListener()继承自OnPageChangeListener()        viewPager.setOnPageChangeListener(new NavigationPageChangeListener());    }    // 导航图片view的适配器,必须要实现的是下面四个方法    class NavigationPageAdapter extends PagerAdapter {        @Override        public int getCount() {            return pageViews.size();        }        @Override        public boolean isViewFromObject(View arg0, Object arg1) {            return arg0 == arg1;        }        // 初始化每个Item        @Override        public Object instantiateItem(View container, int position) {            ((ViewPager) container).addView(pageViews.get(position));            //为其中第3个有按钮的View页面添加相应的监听事件            if(position==2){                btnOK=(Button)findViewById(R.id.btnOK);                btnOK.setOnClickListener(new View.OnClickListener() {                    @Override                    public void onClick(View v) {                        Toast.makeText(getApplicationContext(), "点击按钮", Toast.LENGTH_SHORT);//                        Intent intent = new Intent(ViewPageActivity.this, PicActivity.class);//                        startActivity(intent);                    }                });            }            return pageViews.get(position);           // return page;        }        // 销毁每个Item        @Override        public void destroyItem(View container, int position, Object object) {            ((ViewPager) container).removeView(pageViews.get(position));        }    }    // viewpager的监听器,主要是onPageSelected要实现    class NavigationPageChangeListener implements ViewPager.OnPageChangeListener {        @Override        public void onPageScrollStateChanged(int arg0) {        }        @Override        public void onPageScrolled(int arg0, float arg1, int arg2) {        }        @Override        public void onPageSelected(int position) {            // 循环主要是控制导航中每个小圆点的状态            for (int i = 0; i < imageViews.length; i++) {                // 当前view下设置小圆点为选中状态                imageViews[i].setImageDrawable(getResources().getDrawable(                        R.drawable.page_indicator_focused));                // 其余设置为未选中状态                if (position != i)                    imageViews[i].setImageDrawable(getResources().getDrawable(                            R.drawable.page_indicator_unfocused));            }        }    }}                               
参考博客:<a target=_blank href="http://blog.csdn.net/alangdangjia/article/details/9054921">点击打开链接</a>
<a target=_blank href="http://www.cnblogs.com/top5/archive/2012/05/04/2482328.html">点击打开链接</a>
<a target=_blank href="http://www.cnblogs.com/weixing/archive/2013/10/11/3363951.html">点击打开链接</a>
0 0