Hadler机制,出理轮播图

// 无限轮播
if(handler==null){
handler = new MyHandler();
}
// 移除以前的消息
handler.removeCallbacksAndMessages(null);// 把所有消息都移除掉
// 发送延迟消息

handler.sendMessageDelayed(Message.obtain(), 3000);


//收到消息

class MyHandler extends Handler{
@Override
public void handleMessage(Message msg) {
// System.out.println("切换到下一页:" + this);
// 出理了内存溢出,界面不存在,就不在发消息
if(vp_tabdetail_image.getWindowVisibility()==View.GONE){
// 移除已经的发过的消息
handler.removeCallbacksAndMessages(null);
return;
}
// 收到延迟消息,把轮播图切换到下一页
int nextIndex = (vp_tabdetail_image.getCurrentItem()+1) % topnewsData.size();
if(nextIndex==0){

//如果将要滑动到的下一页是第一页,不要滑到效果
vp_tabdetail_image.setCurrentItem(nextIndex,false);
}else{
vp_tabdetail_image.setCurrentItem(nextIndex);
}
// 实现无限循环
handler.sendMessageDelayed(Message.obtain(), 3000);
}
}



@Override
public Object instantiateItem(ViewGroup container, int position) {
ImageView imageView = new ImageView(mContext);
container.addView(imageView);
// 设置缩放类型
imageView.setScaleType(ScaleType.CENTER_CROP);
// 使用xutils 加载图片
bitmapUtils.display(imageView, topnewsData.get(position).topimage);// set src
// 监听图片的触摸事件
imageView.setOnTouchListener(new OnTouchListener() {

@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 手指按下,停止轮播
System.out.println("手指按下,停止轮播");
handler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_UP:
// 手指抬起,继续轮播
System.out.println("手指抬起,继续轮播");
handler.sendMessageDelayed(Message.obtain(), 3000);
break;

case MotionEvent.ACTION_CANCEL:
// 事件取消,继续轮播
System.out.println("事件取消,继续轮播");
handler.sendMessageDelayed(Message.obtain(), 3000);
break;


default:
break;
}
return true;//通过这个来区分要不要up事件
}
});
return imageView;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值