2020-03-26 Viewpager+fragment无限循环、设置Viewpage滑动速度r

1、viewPager的适配器 getCount() 方法返回Integer.max; getItem() 方法 返回 list.get(position%list.size());


ViewPager.setCurrentItem(position),即使已设置动画,但是没有动画效果

原因:因为ViewPager滑动之前的时间间隔太短,可以通过反射,去修改ViewPager自动滑动时间, 这样修改不会影响手动滑动时间

通过反射重新为ViewPager设置Scroller

private void setViewPagerScroller() {

try {

Field scrollerField = ViewPager.class.getDeclaredField("mScroller");

scrollerField.setAccessible(true);

Field interpolator = ViewPager.class.getDeclaredField("sInterpolator");

interpolator.setAccessible(true);

Scroller scroller = new Scroller(this, (Interpolator) interpolator.get(null)) {

@Override

public void startScroll(int startX, int startY, int dx, int dy, int duration) {

super.startScroll(startX, startY, dx, dy, duration * 7);    // 这里是关键,将duration变长或变短

}

};

scrollerField.set(viewPager, scroller);

} catch (NoSuchFieldException e) {

// Do nothing.

} catch (IllegalAccessException e) {

// Do nothing.

}

}

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容