修改ViewPager调用setCurrentItem时,滑屏的速度
发布日期:2021-09-05 08:11:43 浏览次数:5 分类:技术文章

本文共 1623 字,大约阅读时间需要 5 分钟。

原文摘自: 

在使用ViewPager的过程中,有需要直接跳转到某一个页面的情况,这个时候就需要用到ViewPager的setCurrentItem方法了,它的意思是跳转到ViewPager的指定页面,但在使用这个方法的时候有个问题,跳转的时候有滑动效果,当需要从当前页面跳转到其它页面时,跳转页面跨度过大、或者ViewPager每个页面的视觉效果相差较大时,通过这种方式实现ViewPager跳转显得很不美观,怎么办呢,我们可以去掉在使用ViewPager的setCurrentItem方法时的滑屏速度,具体实现如下:

一、自定义一个Scroll类,用于控制ViewPager滑动速度:

 

[java] 
 
  1. <span style="font-size:18px">import android.content.Context;  
  2. import android.view.animation.Interpolator;  
  3. import android.widget.Scroller;  
  4.   
  5. public class FixedSpeedScroller extends Scroller {  
  6.     private int mDuration = 0;  
  7.   
  8.     public FixedSpeedScroller(Context context) {  
  9.         super(context);  
  10.     }  
  11.   
  12.     public FixedSpeedScroller(Context context, Interpolator interpolator) {  
  13.         super(context, interpolator);  
  14.     }  
  15.   
  16.     public FixedSpeedScroller(Context context, Interpolator interpolator, boolean flywheel) {  
  17.         super(context, interpolator, flywheel);  
  18.     }  
  19.   
  20.   
  21.     @Override  
  22.     public void startScroll(int startX, int startY, int dx, int dy, int duration) {  
  23.         super.startScroll(startX, startY, dx, dy, mDuration);  
  24.     }  
  25.   
  26.     @Override  
  27.     public void startScroll(int startX, int startY, int dx, int dy) {  
  28.         super.startScroll(startX, startY, dx, dy, mDuration);  
  29.     }  
  30. }</span>  

二、在初始化ViewPager时,对ViewPager作如下设置:

 

 

[java] 
 
  1. <span style="font-size:18px">/** 
  2.      * 设置ViewPager的滑动速度 
  3.      *  
  4.      * */  
  5.     private void setViewPagerScrollSpeed( ){  
  6.         try {  
  7.             Field mScroller = null;  
  8.             mScroller = ViewPager.class.getDeclaredField("mScroller");  
  9.             mScroller.setAccessible(true);   
  10.             FixedSpeedScroller scroller = new FixedSpeedScroller( mViewPager.getContext( ) );  
  11.             mScroller.set( mViewPager, scroller);  
  12.         }catch(NoSuchFieldException e){  
  13.               
  14.         }catch (IllegalArgumentException e){  
  15.               
  16.         }catch (IllegalAccessException e){  
  17.               
  18.         }  
  19.     }</span>  

运行代码后你就发现,它是直接跳转,没有滑屏效果了。

转载地址:https://blog.csdn.net/weixin_34235135/article/details/85605252 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:【重温经典算法之一】归并排序
下一篇:Storm DRPC实现机制分析

发表评论

最新留言

很好
[***.229.124.182]2024年04月04日 20时29分08秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章