ViewPager setCurrentItem 設定滑動速度
阿新 • • 發佈:2019-02-08
參考:http://hiqianjin.com/blog/474
當我們用一個按鈕來控制ViewPager 切換到下一頁的時候:
mViewPager.setCurrentItem(++currPositon),該方法會讓ViewPager快速閃到下一頁,使用者體驗極差。
1、這時自定義一個Scroller類(控制ViewPager的滑動速度)是一個很好的解決辦法:
package com.example.july21; import android.content.Context; import android.view.animation.Interpolator; import android.widget.Scroller; public class FixedSpeedScroller extends Scroller { private int mDuration = 1000;//這裡是定義切換的時長 public FixedSpeedScroller(Context context) { super(context); } public FixedSpeedScroller(Context context, Interpolator interpolator) { super(context, interpolator); } public FixedSpeedScroller(Context context, Interpolator interpolator, boolean flywheel) { super(context, interpolator, flywheel); } @Override public void startScroll(int startX, int startY, int dx, int dy, int duration) { super.startScroll(startX, startY, dx, dy, mDuration); } @Override public void startScroll(int startX, int startY, int dx, int dy) { super.startScroll(startX, startY, dx, dy, mDuration); } }
2、在ViewPager類中增加對ViewPager初始化的程式碼(說句廢話,該方法要在mViewPager,findViewById後)
import java.lang.reflect.Field; private void setViewPagerScrollSpeed() { try { Field mScroller = null; mScroller = ViewPager.class.getDeclaredField("mScroller"); mScroller.setAccessible(true); FixedSpeedScroller scroller = new FixedSpeedScroller(mViewPager.getContext()); mScroller.set(mViewPager, scroller); } catch (NoSuchFieldException e) { } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } }