参考: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) {
}
}