ViewPager實現自動輪播及按壓及滑動狀態下停止自動輪播
阿新 • • 發佈:2018-12-28
ViewPager實現自動輪播及按壓及滑動狀態下停止自動輪播
/**
* 設定自動輪播
*@param viewpager viewpage物件
*@param pauseTime 跳轉延時時間
* @param size viewpage頁數
*/
private void autoScroll(final ViewPager viewPager, final int pauseTime, final int size) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
//獲取當前的輪播的位置
int currentItem = viewPager.getCurrentItem();
//從當前的圖切換到另一張通過(currentItem + 1)就可以實現
viewPager.setCurrentItem((currentItem + 1) % size);
//通過mHandler請求延遲3秒
mHandler.postDelayed(this , pauseTime);
//呼叫觸控滑動事件方法
viewPagerOnTouch(viewPager, pauseTime, size);
}
}, pauseTime);
}
/**
* 給viewPager設定按壓及滑動不自動輪播
* */
private void viewPagerOnTouch(final ViewPager viewPager, final int pauseTime, final int size) {
//通過mViewPager去設定觸控滑動的點選事件
viewPager.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_MOVE:
mHandler.removeMessages(0);
//移除回撥函式和訊息
case MotionEvent.ACTION_DOWN:
mHandler.removeCallbacksAndMessages(null);
break;
//當你觸控時停止自動滑動
case MotionEvent.ACTION_UP:
autoScroll(viewPager, pauseTime, size);
break;
}
return false;
}
});
}