Android ViewPager 修改滑動速度
阿新 • • 發佈:2019-01-05
因為viewPager滑動速度太快而煩惱嗎?用這個方法讓viewPager的滑動掌控在你的手下:
自定義Scroller控制元件
public class FixedSpeedScroller extends Scroller {
private int mDuration = 1500; // 預設滑動速度 1500ms
public FixedSpeedScroller(Context context) {
super(context);
}
public FixedSpeedScroller(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);
}
/**
* set animation time
*
* @param time
*/
public void setmDuration(int time) {
mDuration = time;
}
/**
* get current animation time
*
* @return
*/
public int getmDuration() {
return mDuration;
}
}
在工具類中新增使用幫助的程式碼
public class CommonUtils {
private static FixedSpeedScroller mScroller = null;
/**
* 設定ViewPager的滑動時間
* @param context
* @param viewpager ViewPager控制元件
* @param DurationSwitch 滑動延時
*/
public static void controlViewPagerSpeed(Context context,ViewPager viewpager,int DurationSwitch) {
try {
Field mField;
mField = ViewPager.class.getDeclaredField("mScroller");
mField.setAccessible(true);
mScroller = new FixedSpeedScroller(context,
new AccelerateInterpolator());
mScroller.setmDuration(DurationSwitch);
mField.set(viewpager, mScroller);
} catch (Exception e) {
e.printStackTrace();
}
}
}
使用方法
//獲取到ViewPager控制元件
ViewPager viewPager = (ViewPager) findViewById(R.id.vp);
CommonUtils.controlViewPagerSpeed(this, viewPager, 2000);//設定你想要的時間