ViewPager无限轮播

来源:互联网 发布:2017淘宝网双11销量 编辑:程序博客网 时间:2024/05/02 02:08
public class MainActivity extends Activity {

    private List<ImageView> img_view;
    private List<View> dotlist;
    private ViewPager pager_v;
    private MyPagerAdapter adapter;
    private LinearLayout linear;
    private int count=0;
    private int sleeps = 0;

    
    private Handler handler = new Handler(){
        public void handleMessage(android.os.Message msg) {
            pager_v.setCurrentItem(sleeps);
        };
    };
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        pager_v = (ViewPager) findViewById(R.id.pager_v);
        linear = (LinearLayout) findViewById(R.id.linear);
        initArray();
        //监听
        pager_v.setOnPageChangeListener(new OnPageChangeListener() {
            
            @Override
            public void onPageSelected(int position) {
                dotlist.get(position % img_view.size()).setBackgroundResource(R.drawable.dots2);
                dotlist.get(count % img_view.size()).setBackgroundResource(R.drawable.dot1);
                count = position;
            }
            
            @Override
            public void onPageScrolled(int arg0, float arg1, int arg2) {
                                
            }
            
            @Override
            public void onPageScrollStateChanged(int arg0) {
                                
            }
        });
        //添加适配器
        adapter = new MyPagerAdapter();
        pager_v.setAdapter(adapter);
        autoPlay();
    }

    private void initArray() {
        img_view = new ArrayList<ImageView>();
        dotlist = new ArrayList<View>();
        //添加图片
        ImageView img1 = new ImageView(this);
        img1.setBackgroundResource(R.drawable.a);
        img_view.add(img1);
        ImageView img2 = new ImageView(this);
        img2.setBackgroundResource(R.drawable.b);
        img_view.add(img2);
        ImageView img3 = new ImageView(this);
        img3.setBackgroundResource(R.drawable.c);
        img_view.add(img3);
        ImageView img4 = new ImageView(this);
        img4.setBackgroundResource(R.drawable.d);
        img_view.add(img4);
        
        //添加小圆点  小圆点根据图片滑动而滚动
        for (int i = 0; i < img_view.size(); i++) {
            View view = new View(this);
            //设置原点的宽高
            view.setLayoutParams(new LinearLayout.LayoutParams(10, 10));
            //添加
            dotlist.add(view);
            if (i==0) {//默认选中
                dotlist.get(i).setBackgroundResource(R.drawable.dots2);
            } else {
                dotlist.get(i).setBackgroundResource(R.drawable.dot1);
            }
            linear.addView(dotlist.get(i));
        }
    }

    class MyPagerAdapter extends PagerAdapter{

        @Override
        public int getCount() {
            return Integer.MAX_VALUE;
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            return arg0==arg1;
        }
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            
        }
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            ImageView imageView = img_view.get(position % img_view.size());
            //定义一个父类
            ViewPager parent = (ViewPager) imageView.getParent();
            //判断一下 不为空时将其删除
            if (parent != null) {
                parent.removeView(imageView);
            }
            container.addView(imageView);
            return imageView;
        }        
    }
    //延时跳转
    private void autoPlay(){
        new Thread(){
            public void run() {
                while (true) {
                    SystemClock.sleep(2000);
                    sleeps ++;
                    handler.sendEmptyMessage(0);
                }
            };
        }.start();
    }
    
}

0 0