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。看看没有设置之前和设置之后的效果吧:

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

设置之后:

这里写图片描述

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

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

浩宇软件开发

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值