// 当参数为null时,handler将移除所有的回调和消息,可用于轮播图
mHandler.removeCallbacksAndMessages(null);
以下是自动轮播图的部分核心代码:
1、利用handler消息实现自动轮播
// 使用handler处理广告条自动轮播
if (mHandler == null) {
mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
// 得到当前页面位置
int currentItem = mVpTabDetail.getCurrentItem();
// 页面位置自增1
currentItem++;
// 到了最后一张图片
if (currentItem == mTopnews.size()) {
currentItem = 0;
}
mVpTabDetail.setCurrentItem(currentItem);
// 3秒后发送一次信息
mHandler.sendEmptyMessageDelayed(0, 3000);
}
};
}
//触发自动轮播
mHandler.sendEmptyMessageDelayed(0, 3000);
2、按下轮播图时停止轮播,松开时自动轮播
// 设置广告轮播图的触摸事件,当用户按下时停止轮播,抬起时继续轮播
mVpTabDetail.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:// 按下
// 当参数为null时,handler将移除所有的回调和消息
mHandler.removeCallbacksAndMessages(null);
break;
case MotionEvent.ACTION_CANCEL:// 事件取消
// 给handler发一条消息即可让它自动继续轮播
mHandler.sendEmptyMessageDelayed(0, 3000);
break;
case MotionEvent.ACTION_UP:// 抬起
mHandler.sendEmptyMessageDelayed(0, 3000);
break;
default:
break;
}
return false;
}
});