1. 程式人生 > >ViewPager實現自動輪播及按壓及滑動狀態下停止自動輪播

ViewPager實現自動輪播及按壓及滑動狀態下停止自動輪播

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; } }); }