ViewPager自動輪播,手指按住停止輪播
阿新 • • 發佈:2019-02-07
前面寫了ViewPager新增指示器,無限輪播,自動輪播。但是自動輪播有一個問題就是手指按住後要停止輪播才行。
新增指示器,無限輪播,自動輪播請參考另外兩篇文章:
《viewpager自新增指示器,無限輪播》
《ViewPager的自動輪播》
下面就記錄一下,手指按住viewpager後停止自動輪播。
其實這個比較簡單,就是對viewpager做一個觸控監聽即可。然後判斷下up和down事件
//通過監聽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;
}
});
設定是否自動輪播的關鍵
//根據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);//這裡定義了輪播圖切換的間隔時間