当前位置: 首页 > 工具软件 > ViewPager > 使用案例 >

viewpager用法

汪博达
2023-12-01
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>
 类似资料: