1. 程式人生 > >viewPager控制滑動速度和時間

viewPager控制滑動速度和時間

遇到如下問題:viewpager滑動時如果想跳過很多條直接到最後一條,中間會黑屏。黑屏是因為中間的view沒有加載出來的緣故。

stackOverflow上看到的解決方案,在這裡記錄一下,

public class FixedScroller extends Scroller {



    private int mDuration = 500;


    public FixedScroller(Context context) {
        super(context);
    }


    public FixedScroller(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);
    }

}

然後再:

try {
            Field mScroller;
            mScroller = ViewPager.class.getDeclaredField("mScroller");
            mScroller.setAccessible(true); 
            Interpolator sInterpolator = new AccelerateDecelerateInterpolator();
            FixedScroller scroller = new FixedScroller(viewPager.getContext(), sInterpolator);
            mScroller.set(viewPager, scroller);
        } catch (NoSuchFieldException e) {
        } catch (IllegalArgumentException e) {
        } catch (IllegalAccessException e) {
        }

住要是設定了滑動的時間間隔和滑動時的攔截器。

這樣滑動就能看到中間的確是有黑屏的。

最後再在加上:

@Override
public void onClick(View v) {
viewPager.setCurrentItem(3);
viewPager.setCurrentItem(c_current-1);
}

主要因為滑動時,載入3個view,所以給中間讓他滑動到中間一次就可以解決這個問題。