ViewPager系列文章(二)- ViewPager实现自动轮播及控制改变ViewPager切换速率

1. setCurrentItem()方法中

mScroller.startScroll(sx, sy, dx, dy, duration):左右切换ViewPager页面执行的动画;

2. 实现自动轮播3种方式

1>:使用 Timer类 写一个 定时器;
2>:使用 handler 发送消息;
3>:使用 start Thread,开启一个子线程

这里采用 handler方式,handler可能会出现内存泄露问题(原因就是:handler生命周期比activity的生命周期大)
如果不销毁 handler,那么 handler可以一直执行,activity就不会被销毁,如果 activity不会被销毁,可能就会导致内存泄露的问题;

3. 控制改变 ViewPager切换的速率

        // 3. 改变ViewPager的切换速率
        // 方式1:duration 持续的时间,在源码中是局部变量,无法改变,
        // 方式2:可以改变 mScroll,在源码中发现是 private,使用反射
        try {

            // 通过ViewPager这个类,获取mScroller属性,然后把mScroll属性设置为我们自定义的 BannerScroll
            Field field = ViewPager.class.getDeclaredField("mScroller") ;
            // 设置参数,第一个object表示这儿属性在哪个类,第二个参数代表要设置的值
            mScroll = new BannerScroll(context);
            // 设置为强制改变私有private属性
            field.setAccessible(true);
            field.set(this , mScroll);
        } catch (Exception e) {
            e.printStackTrace();
        }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,556评论 25 708
  • 介绍自己负责的部分,如何实现的。 自定义view viewGroup activity的启动流程 事件传递及滑动冲...
    东经315度阅读 1,248评论 1 4
  • 3.21 阴 3°—8°亲爱的爷爷,当我写下这封信的时候,是你离开人世的第一天。原谅孙女不能陪在你...
    北不及北阅读 165评论 1 2
  • 此事本不足为外人道,但出于记录生活原则,还是说一下吧!昨晚上半夜两点多被跳蚤叮咬致醒,我是十一点多睡的。真...
    黑木兆督阅读 226评论 0 0