ViewPagerカスタムスクロール時間の設定

1288 ワード

public class ViewPagerScroller extends Scroller {
    private int mDuration = 1500;
    
    public ViewPagerScroller(Context context, Interpolator interpolator) {
        super(context, interpolator);
    }

    @Override
    public void startScroll(int startX, int startY, int dx, int dy, int duration) {
        // Ignore received duration, use fixed one instead
        super.startScroll(startX, startY, dx, dy, mDuration);
    }

    @Override
    public void startScroll(int startX, int startY, int dx, int dy) {
        // Ignore received duration, use fixed one instead
        super.startScroll(startX, startY, dx, dy, mDuration);
    }

    public void setmDuration(int time) {
        mDuration = time;
    }

    public int getmDuration() {
        return mDuration;
    }
}

次に、上記のメソッドを直接呼び出します.
scroller.setmDuration(1500);viewpagerカスタムスクロール時間を設定し、自分のニーズに合わせて設定します
try {
    Field field = ViewPager.class.getDeclaredField("mScroller");
    field.setAccessible(true);         ViewPagerScroller scroller = new ViewPagerScroller (mViewPager.getContext(),            new AccelerateInterpolator());
    field.set(mViewPager, scroller);
    scroller.setmDuration(1500);
} catch (Exception e) {

}