轮播图 小点 无限轮播

来源:互联网 发布:淘宝类目有哪些 编辑:程序博客网 时间:2024/05/19 02:00
public class MyRoolViewPager extends ViewPager {  //线程实现自动轮播    Handler handler = new Handler() {        @Override        public void handleMessage(Message msg) {            super.handleMessage(msg);            int currentItem = MyRoolViewPager.this.getCurrentItem();            currentItem++;            MyRoolViewPager.this.setCurrentItem(currentItem);            this.sendEmptyMessageDelayed(1, 2000);        }    };  //viewpager监听 设置图片与小点关联        this.setOnPageChangeListener(new OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {                for (int i = 0; i < dotList.size(); i++) {                    if (i == position%imgUrlList.size()) {                        dotList.get(i).setImageResource(dotarray[1]);                    } else {                        dotList.get(i).setImageResource(dotarray[0]);                    }                }            }            @Override            public void onPageScrollStateChanged(int state) {            }        });    }    /**     * 设置适配器  并开始轮播     */    public void startViewPager() {        if (myPagerAdapter == null)            myPagerAdapter = new MyPagerAdapter();        this.setAdapter(myPagerAdapter);        MyRoolViewPager.this.setCurrentItem(10000);        handler.sendEmptyMessageDelayed(1, 2000);    }    class MyPagerAdapter extends PagerAdapter {        @Override        public int getCount() {            return Integer.MAX_VALUE;        }        @Override        public boolean isViewFromObject(View view, Object object) {            return view == object;        }        @Override        public Object instantiateItem(ViewGroup container, final int position) {            ImageView img = new ImageView(getContext());//图片设置 ImageLoader.getInstance().displayImage(imgUrlList.get(position%imgUrlList.size()), img, options);            img.setScaleType(ImageView.ScaleType.CENTER_CROP);            container.addView(img);            //ViewPager触摸事件            img.setOnTouchListener(new OnTouchListener() {                @Override                public boolean onTouch(View v, MotionEvent event) {                    switch (event.getAction()){                        case MotionEvent.ACTION_DOWN:                            //按下的时候 获得当前X、Y的坐标  当前系统事件                            xdown = event.getX();                            ydown = event.getY();                            timedown = System.currentTimeMillis();                            //轮播停止                            handler.removeCallbacksAndMessages(null);                            break;                        case MotionEvent.ACTION_CANCEL:                        case MotionEvent.ACTION_UP:                            //抬起的时候  获取抬起的X、Y坐标 系统事件                            float xup = event.getX();                            float yup = event.getY();                            long timeup = System.currentTimeMillis();                            //如果按下根抬起的坐标一致 且事件不超过1秒钟  认定为点击事件                            if(xup==xdown&&yup==ydown&&timeup-timedown<1000){                            //跳转界面 设置监听回调                         if(onPagerClickListener!=null){                             onPagerClickListener.setOnpage(position);                         }                            }                            handler.sendEmptyMessageDelayed(1,2000);                            break;                        case MotionEvent.ACTION_MOVE:                            break;                    }                    return true;                }            });            return img;        }        @Override        public void destroyItem(ViewGroup container, int position, Object object) {            container.removeView((View) object);        }    }    //当前窗口不可见 移除任务     @Override    protected void onDetachedFromWindow() {        super.onDetachedFromWindow();        handler.removeCallbacksAndMessages(null);    }    //准备接口    public interface OnPagerClickListener{            public abstract void setOnpage(int position);    }    //设置接口    public void setOnPagerClickListener(OnPagerClickListener onPagerClickListener){        this.onPagerClickListener=onPagerClickListener;    }}//小点在Activity中的设置 
//初始化前 先清空小点的数据dotListt.clear();ll_dots.removeAllViews();for (int i = 0; i < ad1.size(); i++) {    imgUrlList.add(ad1.get(i).getImage());}for (int i = 0; i < ad1.size(); i++) {    ImageView img = new ImageView(getActivity());    if (i == 0) {        img.setImageResource(R.mipmap.zaker_content_praise_press);    } else {        img.setImageResource(R.mipmap.zaker_content_praise);    }    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);    layoutParams.setMargins(10, 5, 10, 10);    dotListt.add(img);    ll_dots.addView(img, layoutParams);}

0 0