viewPager控制滑动速度和时间:利用反射机制实现

转载 2015年07月07日 23:25:15

遇到如下问题:viewpager滑动时如果想跳过很多条直接到最后一条,中间会黑屏。黑屏是因为中间的view没有加载出来的缘故。


stackOverflow上看到的解决方案,在这里记录一下,

public class FixedScroller extends Scroller {



    private int mDuration = 500;


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


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


    @Override
    public void startScroll(int startX, int startY, int dx, int dy, int duration) {
        // Ignore received duration, use fixed one instead
        super.startScroll(startX, startY, dx, dy, mDuration);
    }


    @Override
    public void startScroll(int startX, int startY, int dx, int dy) {
        // Ignore received duration, use fixed one instead
        super.startScroll(startX, startY, dx, dy, mDuration);
    }

}

然后再:

try {
            Field mScroller;
            mScroller = ViewPager.class.getDeclaredField("mScroller");
            mScroller.setAccessible(true); 
            Interpolator sInterpolator = new AccelerateDecelerateInterpolator();
            FixedScroller scroller = new FixedScroller(viewPager.getContext(), sInterpolator);
            mScroller.set(viewPager, scroller);
        } catch (NoSuchFieldException e) {
        } catch (IllegalArgumentException e) {
        } catch (IllegalAccessException e) {
        }

住要是设置了滑动的时间间隔和滑动时的拦截器。

这样滑动就能看到中间的确是有黑屏的。

最后再在加上:

@Override
public void onClick(View v) {
viewPager.setCurrentItem(3);
viewPager.setCurrentItem(c_current-1);
}

主要因为滑动时,加载3个view,所以给中间让他滑动到中间一次就可以解决这个问题。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Viewpager自动轮播,可修改滑动速度

Viewpager自动轮播,间隔时间5秒: 如果五秒内用户没有手动滑动viewpager,则自动跳转到下一页 /** * 配置viewPager */ private ExecutorSer...
  • Dovar_66
  • Dovar_66
  • 2016年08月29日 13:22
  • 2126

android viewPager滑动速度设置

ViewPager 滑动速度设置,并实现点击按钮滑动        使用过ViewPager的童鞋,都会感觉到设置界面滑动挺简单的。但是有时候却满足不了UI设计的要求。      在...
  • u011467537
  • u011467537
  • 2015年03月28日 17:14
  • 1653

ViewPager源码分析(2):滑动及冲突处理

上一篇介绍了`ViewPager`的`onMeasure`和`onLayout`两个方法,这是自定义View最基本的两个函数。但是我们的`ViewPager`有个需求就是滑动,接下来我们一起去学习`V...
  • huachao1001
  • huachao1001
  • 2016年06月13日 13:56
  • 5806

通过反射机制为ViewPager设置滑动效果

前几天熟悉项目,看到项目中牛逼的代码,不禁感到羞愧,同样是程序员为什么别人能写出那么高大上的代码!可能是自己太菜,看到稍微高级点的代码就感觉好屌,努力一点点积累啊,向大神们学习!下面进入正题! 自...
  • qq_15264049
  • qq_15264049
  • 2017年12月15日 18:31
  • 16

Android开发模板------ViewPager(三):实现无限循环、可嵌套RecyclerView、可控制滑动速度

一、使用布局就不贴了,直接写业务逻辑:private ViewPager mPager; private LinearLayout mVPIndicate; private void ...
  • dsc114
  • dsc114
  • 2017年12月12日 09:25
  • 54

Android开发模板------ViewPager(三):实现无限循环、可嵌套RecyclerView、可控制滑动速度

一、布局很简单: 二、使用也比较简单,直接看代码:private ViewPag
  • dsc114
  • dsc114
  • 2017年06月23日 11:07
  • 399

利用宏实现反射机制

  • 2015年10月22日 08:50
  • 3.19MB
  • 下载

使用反射机制控制Toast的显示时间

使用反射机制控制Toast的显示时间 1、Toast源码分析:          Toast的默认view是在transient_notification.xml中定义的一个TextView,如果...
  • gucun4848
  • gucun4848
  • 2012年10月22日 12:00
  • 934

c#插件模式 ——例子(利用反射机制)

  • 2009年12月31日 10:30
  • 115KB
  • 下载

在android中利用JAVA反射机制终止通话

  • 2012年05月24日 09:36
  • 155KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:viewPager控制滑动速度和时间:利用反射机制实现
举报原因:
原因补充:

(最多只允许输入30个字)