設置ViewPager 自動滑動時間,速度 方便展示動畫


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.
}
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM