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

导读:本篇文章讲解 Android之 修改ViewPager调用setCurrentItem时,滑屏的速度,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

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

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

设置之后:

这里写图片描述

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/12862.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!