Android之 修改ViewPager调用setCurrentItem时,滑屏的速度

1。前言:

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

import java.lang.reflect.Field;

import android.annotation.SuppressLint;
import android.content.Context;
import android.support.v4.view.ViewPager;
import android.view.animation.Interpolator;
import android.widget.Scroller;

public class ViewPagerScroller extends Scroller{
    
    

    private int mScrollDuration = 800; // 滑动速度

    /**
    * 设置速度速度
    *
    * @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);
    }

    @SuppressLint("NewApi")
    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();
    }
    }

}

2使用:

    viewPager.setCurrentItem(showPosition);
        ViewPagerScroller mPagerScroller=new ViewPagerScroller(getActivity());
        mPagerScroller.initViewPagerScroll(viewPager);

3。看看没有设置之前和设置之后的效果吧:

设置之前:
这里写图片描述

设置之后:

这里写图片描述

对比两幅滑动效果,是不是设置之后的视觉效果更舒服呢!!具有阻尼效果,视觉更好

猜你喜欢

转载自blog.csdn.net/jky_yihuangxing/article/details/52584787
今日推荐