ViewPager轮播

来源:互联网 发布:义乌淘宝美工培训学校 编辑:程序博客网 时间:2024/06/04 19:38
public class MainActivity extends Activity {    private ViewPager vp;    private LinearLayout ll;    private List<ImageView> imageList;    private List<View> dotList;    private int oldPosition = 0;    //定义一个显示当前的页面位置    private int currentPostion = 0;    private Handler handler = new Handler(){        public void handleMessage(android.os.Message msg) {            vp.setCurrentItem(currentPostion);        };    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        initData();        //设置适配器        setViewPagerAdapter();        autoPlay();    }    private void initData() {        imageList = new ArrayList<ImageView>();        dotList = new ArrayList<View>();        //创建轮播页面图        ImageView imageView1 = new ImageView(this);        imageView1.setBackgroundResource(R.drawable.i);        ImageView imageView2 = new ImageView(this);        imageView2.setBackgroundResource(R.drawable.n);        ImageView imageView3 = new ImageView(this);        imageView3.setBackgroundResource(R.drawable.o);        ImageView imageView4 = new ImageView(this);        imageView4.setBackgroundResource(R.drawable.p);        //添加到集合        imageList.add(imageView1);        imageList.add(imageView2);        imageList.add(imageView3);        imageList.add(imageView4);        //初始化底部圆点        for (int i = 0; i < imageList.size(); i++) {            //创建圆点            View view = new View(this);            //设置圆点宽高            view.setLayoutParams(new LinearLayout.LayoutParams(50, 50));            dotList.add(view);            if(i == 0){//默认选中状态  第一个圆点                dotList.get(i).setBackgroundResource(R.drawable.btn_radio_on_holo_dark);            }else{                dotList.get(i).setBackgroundResource(R.drawable.btn_radio_on_disabled_holo_dark);            }            //挂载到LinearLayout节点下            ll.addView(dotList.get(i));        }    }    private void initView() {        vp = (ViewPager) findViewById(R.id.vp);        ll = (LinearLayout) findViewById(R.id.ll);    }    /**     * 设置适配器     */    @SuppressWarnings("deprecation")    private void setViewPagerAdapter() {        vp.setAdapter(new MyPagerAdapter());        vp.setOnPageChangeListener(new OnPageChangeListener() {            @Override            public void onPageSelected(int position) {                dotList.get(position % imageList.size()).                setBackgroundResource(R.drawable.btn_radio_on_holo_dark);                dotList.get(oldPosition % imageList.size()).                setBackgroundResource(R.drawable.btn_radio_on_disabled_holo_dark);                //更新圆点位置                oldPosition = position;            }            @Override            public void onPageScrolled(int arg0, float arg1, int arg2) {            }            @Override            public void onPageScrollStateChanged(int arg0) {            }        });    }    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) {            //super.destroyItem(container, position, object);            //container.removeView(imageList.get(position));            //轮播的话,我们就不去做处理了        }        @Override        public Object instantiateItem(ViewGroup container, int position) {            ImageView imageView = imageList.get(position % imageList.size());            ViewPager parent = (ViewPager) imageView.getParent();            if(parent != null){                parent.removeView(imageView);            }                       //ImageView imageView = new ImageView(this);            //imageView.setBackgroundResource(int[position])                        container.addView(imageView);                       return imageView;        }    }    /**     * 自动轮播     */    private void autoPlay(){        new Thread(){            public void run() {                //无线循环                while(true){                    SystemClock.sleep(3000);                    currentPostion++;                    //发送消息                    handler.sendEmptyMessage(0);                }            };        }.start();    }}
原创粉丝点击