1. 程式人生 > >ViewPager自動輪播,手指按住停止輪播

ViewPager自動輪播,手指按住停止輪播

前面寫了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);//這裡定義了輪播圖切換的間隔時間