修改ViewPager調用setCurrentItem時,滑屏的速度 ,解決滑動之間切換動畫難看


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

一、自定義一個Scroll類,用於控制ViewPager滑動速度:
import Android.view.animation.Interpolator;
import android.widget.Scroller;

public class FixedSpeedScroller extends Scroller {
 private int mDuration = 0;

    public FixedSpeedScroller(Context context) {
        super(context);
    }

    public FixedSpeedScroller(Context context, Interpolator interpolator) {
        super(context, interpolator);
    }

    public FixedSpeedScroller(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, mDuration);
    }


    @Override
    public void startScroll(int startX, int startY, int dx, int dy) {
        super.startScroll(startX, startY, dx, dy, mDuration);
    }
}

二、在初始化ViewPager時,對ViewPager作如下設置:

    * 設置ViewPager的滑動速度
     *
     * */
    private void setViewPagerScrollSpeed( ){
     try {
            Field mScroller = null;
            mScroller = ViewPager.class.getDeclaredField("mScroller");
            mScroller.setAccessible(true);
            FixedSpeedScroller scroller = new FixedSpeedScroller( mViewPager.getContext( ) );
            mScroller.set( mViewPager, scroller);
        }catch(NoSuchFieldException e){
         
        }catch (IllegalArgumentException e){
         
        }catch (IllegalAccessException e){
         
        }
    }


免責聲明!

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



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