android 修改viewpage滑动速度

来源:互联网 发布:linux系统漏洞修复 编辑:程序博客网 时间:2024/06/03 12:05
1、自定义Scroller
public class ViewPageFixedSpeedScroller extends Scroller {    private int mDuration = 300;    public ViewPageFixedSpeedScroller(Context context) {        super(context);        // TODO Auto-generated constructor stub    }    public ViewPageFixedSpeedScroller(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;    }}
2、通过反射修改viewpage 的scoller
try {//通过反射找到当前class 文件里的mScroller的mScrooller对象//getDeclaredField是可以获取一个类的所有字段. //getField只能获取类的public 字段.     Field mField = ViewPager.class.getDeclaredField("mScroller");    mField.setAccessible(true);//设置了private属性的对象也能获取的    Scroller mScroller = new ViewPageFixedSpeedScroller(page.getContext(), new LinearInterpolator());    mField.set(page, mScroller);} catch (Exception e) {    e.printStackTrace();}