ViewPager的setCurrentItem 滑动速度是写死地
下面的方法可以修改,在此以做记录
01 | public class FixedSpeedScroller extends Scroller { |
02 | private int mDuration = 1500 ; |
04 | public FixedSpeedScroller(Context context) { |
08 | public FixedSpeedScroller(Context context, Interpolator interpolator) { |
09 | super (context, interpolator); |
13 | public void startScroll( int startX, int startY, int dx, int dy, int duration) { |
15 | super .startScroll(startX, startY, dx, dy, mDuration); |
19 | public void startScroll( int startX, int startY, int dx, int dy) { |
21 | super .startScroll(startX, startY, dx, dy, mDuration); |
24 | public void setmDuration( int time) { |
28 | public int getmDuration() { |
使用方法:
02 | Field field = ViewPager. class .getDeclaredField( "mScroller" ); |
03 | field.setAccessible( true ); |
04 | FixedSpeedScroller scroller = new FixedSpeedScroller(mViewPager.getContext(), |
05 | new AccelerateInterpolator()); |
06 | field.set(mViewPager, scroller); |
07 | scroller.setmDuration( 2000 ); |
08 | } catch (Exception e) { |
09 | LogUtils.e(TAG, "" , e); |
注意点:
PagerAdapter 的 destroyItem 每次会删除上一个页面,导致,如果做自动切换页面时会看不到动画 .
解决办法:
destoryItem中不做删除view,instantiateItem中对view是否有parent做为判断条件,这种情况适用于,少量的固定的子View,比如一个Banner,banner中做自动循环播放