您的位置:首页 > 移动开发 > Android开发

Android ViewPager 修改滑动速度

2015-07-15 17:23 549 查看
因为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);//设置你想要的时间
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: