ViewPager(通過反射修改viewpager切換速度)

黑夜路口發表於2018-04-17

(建立於2016/11/17)

import java.lang.reflect.Field;  
      
    import android.content.Context;  
    import android.support.v4.view.ViewPager;  
    import android.view.animation.Interpolator;  
    import android.widget.Scroller;  
      
    /** 
     * ViewPager 滾動速度設定 
     *  
     * @author lyy 
     * 
     */  
    public class ViewPagerScroller extends Scroller {  
        private int mScrollDuration = 2000; // 滑動速度  
      
        /** 
         * 設定速度速度 
         *  
         * @param duration 
         */  
        public void setScrollDuration(int duration) {  
            this.mScrollDuration = duration;  
        }  
      
        public ViewPagerScroller(Context context) {  
            super(context);  
        }  
      
        public ViewPagerScroller(Context context, Interpolator interpolator) {  
            super(context, interpolator);  
        }  
      
        public ViewPagerScroller(Context context, Interpolator interpolator,  
                boolean flywheel) {  
            super(context, interpolator, flywheel);  
        }  
      
        @Override  
        public void startScroll(int startX, int startY, int dx, int dy, int duration) {  
            super.startScroll(startX, startY, dx, dy, mScrollDuration);  
        }  
      
        @Override  
        public void startScroll(int startX, int startY, int dx, int dy) {  
            super.startScroll(startX, startY, dx, dy, mScrollDuration);  
        }  
      
        public void initViewPagerScroll(ViewPager viewPager) {  
            try {  
                Field mScroller = ViewPager.class.getDeclaredField("mScroller");  
                mScroller.setAccessible(true);  
                mScroller.set(viewPager, this);  
            } catch (Exception e) {  
                e.printStackTrace();  
            }  
        }  
    }  

呼叫

ViewPagerScroller pagerScroller = new ViewPagerScroller(getActivity());
pagerScroller.setScrollDuration(1000);//設定時間,時間越長,速度越慢
pagerScroller.initViewPagerScroll(mViewPager);


相關文章