美文网首页
ViewPager(通过反射修改viewpager切换速度)

ViewPager(通过反射修改viewpager切换速度)

作者: 任振铭 | 来源:发表于2018-04-17 17:40 被阅读13次

(创建于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);

相关文章

网友评论

      本文标题:ViewPager(通过反射修改viewpager切换速度)

      本文链接:https://www.haomeiwen.com/subject/kjepkftx.html