当点击轮播图的时候,轮播图需要停止轮播;
点击完成之后轮播图可以继续自动轮播;
点击轮播图将数据里面的title进行吐司;
当用手指滑动轮播图的时候,轮播图可以跟随手指进行滑动,停止自动轮播;当手指离开之后轮播自动继续
只需要在给轮播图设置加载图片的时候添加
public class MyVpAdapter extends PagerAdapter {
//数据源
private List<ImageData.DataBean> data;
//上下文对象
private Context context;
private DisplayImageOptions options;
//发送消息的handler
private Handler mhandler;
public MyVpAdapter(List<ImageData.DataBean> data, Context context,Handler handler) {
this.data = data;
this.context = context;
this.mhandler=handler;
this.options=new DisplayImageOptions.Builder()
.cacheInMemory(true)//使用内存缓存
.cacheOnDisk(true)//使用磁盘缓存
.showImageOnLoading(R.mipmap.ic_launcher)//设置正在下载的图片
.showImageForEmptyUri(R.mipmap.ic_launcher)//url为空或请求的资源不存在时
.showImageOnFail(R.mipmap.ic_launcher)//下载失败时显示的图片
.bitmapConfig(Bitmap.Config.RGB_565)//设置图片色彩模式 1px=2个字节 ARGB_8888 1px=4个字节 ARGB_4444 1px=2个字节 ALPHA_8 1px=1个字节
.imageScaleType(ImageScaleType.EXACTLY)//设置图片的缩放模式
.build();
}
@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 imageView=new ImageView(context);
//设置图片缩放模式
imageView.setScaleType(ImageView.ScaleType.FIT_XY);
//下载图片
ImageLoader.getInstance().displayImage(data.get(position%data.size()).getIcon(),imageView,options);
//设置点击事件
imageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(context,data.get(position%data.size()).getTitle(),Toast.LENGTH_SHORT).show();
}
});
//设置触摸监听事件
imageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()){
case MotionEvent.ACTION_DOWN:
//移除所有的消息,不再自动轮播
mhandler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_MOVE:
mhandler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_UP:
//再次发送消息
mhandler.sendEmptyMessageDelayed(0,1000);
break;
case MotionEvent.ACTION_CANCEL:
//再次发送消息
mhandler.sendEmptyMessageDelayed(0,1000);
break;
}
//true:自己消费此事件,不再向上传递 false:自己不处理,向上传递
return false;
}
});
container.addView(imageView);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//super.destroyItem(container, position, object);
container.removeView((View)object);
}
}