Android——UI篇:ViewPager轮播图控制滑动速度

来源:互联网 发布:linux i have no name 编辑:程序博客网 时间:2024/05/18 02:55

       Android中ViewPager的api中,并没有对外暴露方法来设置ViewPager的滑动速度,通过查看源码发现,我们可以利用反射和自定义类的方式来控制viewPager的滑动速度,代码如下:

/**  * 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();          }      }  }  

我们可以通过以下方式来控制ViewPager的滑动速度,上述代码的使用方法如下:

ViewPagerScroller pagerScroller = new ViewPagerScroller(getActivity());pagerScroller.setScrollDuration(1000);//设置时间,时间越长,速度越慢pagerScroller.initViewPagerScroll(mViewPager);

加入上述代码后,我们就可以控制ViewPager轮播图的滑动速度了。