修改ViewPager調用setCurrentItem時,滑屏的速度


原文摘自: 修改ViewPager調用setCurrentItem時,滑屏的速度

在使用ViewPager的過程中,有需要直接跳轉到某一個頁面的情況,這個時候就需要用到ViewPager的setCurrentItem方法了,它的意思是跳轉到ViewPager的指定頁面,但在使用這個方法的時候有個問題,跳轉的時候有滑動效果,當需要從當前頁面跳轉到其它頁面時,跳轉頁面跨度過大、或者ViewPager每個頁面的視覺效果相差較大時,通過這種方式實現ViewPager跳轉顯得很不美觀,怎么辦呢,我們可以去掉在使用ViewPager的setCurrentItem方法時的滑屏速度,具體實現如下:

一、自定義一個Scroll類,用於控制ViewPager滑動速度:

 

[java]  view plain copy
 
  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]  view plain copy
 
  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>  


運行代碼后你就發現,它是直接跳轉,沒有滑屏效果了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM