ViewPager自动轮播,手指按住停止轮播

前面写了ViewPager添加指示器,无限轮播,自动轮播。但是自动轮播有一个问题就是手指按住后要停止轮播才行。
添加指示器,无限轮播,自动轮播请参考另外两篇文章:
《viewpager自添加指示器,无限轮播》
《ViewPager的自动轮播》
下面就记录一下,手指按住viewpager后停止自动轮播。
其实这个比较简单,就是对viewpager做一个触摸监听即可。然后判断下up和down事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

//通过监听onTouch事件,设置一个标签isLoop;手指按下时isLoop = false,手指抬起后isLoop = true;
mViewPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction()) {
case MotionEvent.ACTION_DOWN:
Toast.makeText(MainActivity.this, "Down", Toast.LENGTH_SHORT).show();
isLoop = false;
break;
case MotionEvent.ACTION_UP:
Toast.makeText(MainActivity.this, "Up", Toast.LENGTH_SHORT).show();
isLoop = true;
break;
}
return false;
}
});

设置是否自动轮播的关键

1
2
3
4
5
6
7
8
9
10
11
12

//根据isLoop设置是否轮播
mTimer.schedule(new TimerTask() {
@Override
public void run() {
Message message = new Message();
message.what = UPDATE_VIEWPAGER;
if(isLoop){ //如果isLoop = true 才进行轮播
handler.sendMessage(message);
}
}
}, 1000, 1000);//这里定义了轮播图切换的间隔时间