场景:
ViewPager调用SetCurrentItem()方法,跨页面跳转时闪屏的问题。ViewPager左右滑动需要滑动动画,但在调用setCurrentItem()跨页面滑动时不需要显示滑动动画,要平滑静态滑动。
解决:
重写ViewPager的setCurrentItem方法,当跨页面滑动时,设置duration(scroller.setmDuration(0);)
private FixedSpeedScroller scroller; try { Field field = ViewPager.class.getDeclaredField("mScroller"); field.setAccessible(true); scroller = new FixedSpeedScroller(getContext(), new DecelerateInterpolator()); field.set(this, scroller); scroller.setmDuration(300); } catch (Exception e) { e.printStackTrace(); }
@Override public void setCurrentItem(int item) { if (Math.abs(getCurrentItem() - item) > 1) { scroller.setmDuration(0); super.setCurrentItem(item); scroller.setmDuration(300); } else { scroller.setmDuration(300); super.setCurrentItem(item); } }