Change ViewPager animation duration when sliding programmatically

前端 未结 7 1124
清酒与你
清酒与你 2020-11-28 20:45

I\'m changing slide with the following code:

viewPager.setCurrentItem(index++, true);

But it changes too fast. Is there a way to set manual

7条回答
  •  野性不改
    2020-11-28 20:49

     public class PresentationViewPager extends ViewPager {
    
        public static final int DEFAULT_SCROLL_DURATION = 250;
        public static final int PRESENTATION_MODE_SCROLL_DURATION = 1000;
    
        public PresentationViewPager (Context context) {
            super(context);
        }
    
        public PresentationViewPager (Context context, AttributeSet attrs) {
            super(context, attrs);
        }
    
        public void setDurationScroll(int millis) {
            try {
                Class viewpager = ViewPager.class;
                Field scroller = viewpager.getDeclaredField("mScroller");
                scroller.setAccessible(true);
                scroller.set(this, new OwnScroller(getContext(), millis));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    
        public class OwnScroller extends Scroller {
    
            private int durationScrollMillis = 1;
    
            public OwnScroller(Context context, int durationScroll) {
                super(context, new DecelerateInterpolator());
                this.durationScrollMillis = durationScroll;
            }
    
            @Override
            public void startScroll(int startX, int startY, int dx, int dy, int duration) {
                super.startScroll(startX, startY, dx, dy, durationScrollMillis);
            }
        }
    }
    

提交回复
热议问题