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); }
轮播图 小点 无限轮播
最新推荐文章于 2020-07-13 17:42:00 发布