利用Handler实现图片自动轮播和用户触摸图片时自动停止轮播
<span style="white-space:pre"> </span>Handler mHandler = new Handler();
AutoScrollTask mAutoScrollTask = new AutoScrollTask();
class AutoScrollTask implements Runnable {
public void start() {
//让handler延迟2秒后执行自己这个任务,会调用run方法
mHandler.postDelayed(this, 2000);
}
public void stop() {
//让handler移除自己
mHandler.removeCallbacks(this);
}
@Override
public void run() {
// TODO
//得到当前图片的位置
int item = mViewPager.getCurrentItem();
//位置自增
item++;
//设置图片位置
mViewPager.setCurrentItem(item);
//重新开始一遍,实现递归
start();
}
}
//让图片轮播默认就开始自动轮播
mAutoScrollTask.start();
//设置viewPager的触摸事件
mViewPager.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
//当用户按下viewPager时,移除自动轮播任务
case MotionEvent.ACTION_DOWN:
mAutoScrollTask.stop();
break;
//当用户抬起手指时,执行自动轮播任务
case MotionEvent.ACTION_UP:
mAutoScrollTask.start();
break;
default:
break;
}
return false;
}
});