Android自动滚动 轮播循环的ViewPager
来源:互联网 发布:长征知识知多少 编辑:程序博客网 时间:2024/06/05 17:06
http://www.trinea.cn/android/auto-scroll-view-pager/
主要介绍如何实现ViewPager自动播放,循环滚动的效果及使用。顺便解决ViewPager嵌套(ViewPager inside ViewPager)影响触摸滑动及ViewPager滑动速度设置问题。
项目已开源Android Auto Scroll ViewPager@Github,欢迎star和fork。
示例APK可从这些地址下载:Google Play, 360手机助手, 百度手机助手, 小米应用商店, 豌豆荚
示例代码地址见AutoScrollViewPagerDemo,效果图如下:
1、实现
没有通过ScheduledExecutorService或Timer定期执行某个任务实现,而是简单的通过handler发送消息去完成一次滚动,在完成一次滚动后发送另外一个delay的滚动消息,如此循环实现。自动滚动部分核心代码如下:
至于ViewPager嵌套引起子ViewPager无法触摸问题是通过在子ViewPager的onTouchEvent中添加
禁止父控件对touch event做intercept解决的。
ViewPager滑动速度的设置是通过反射的方式重新设置ViewPager的Scroller,改变Scroller的startScroll的间隔时间完成的。调用setScrollDurationFactor(double)即可。
2、使用
(1) 引入公共库
引入Android Auto Scroll ViewPager@Github作为你项目的library(如何拉取代码及添加公共库)。
(2) 调用
仅需简单两步:
a. 布局定义
代替一般的ViewPager定义
b. 启动ViewPager自动滚动
startAutoScroll() 启动自动滚动
stopAutoScroll() 停止自动滚动
3、设置
setInterval(long) 设置自动滚动的间隔时间,单位为毫秒
setDirection(int) 设置自动滚动的方向,默认向右
setCycle(boolean) 是否自动循环轮播,默认为true
setScrollDurationFactor(double) 设置ViewPager滑动动画间隔时间的倍率,达到减慢动画或改变动画速度的效果
setStopScrollWhenTouch(boolean) 当手指碰到ViewPager时是否停止自动滚动,默认为true
setSlideBorderMode(int) 滑动到第一个或最后一个Item的处理方式,支持没有任何操作、轮播以及传递到父View三种模式
setBorderAnimation(boolean) 设置循环滚动时滑动到从边缘滚动到下一个是否需要动画,默认为true
4、其他
(1) 指示器,圆形或是方形指示器请配合ViewPagerIndicator使用
(2)无限循环,如果希望在最后一张继续播放第一张而不是退回到第一张,请参考AutoScrollViewPagerSingleDemo.java,注意这个特性不能和 ViewPagerIndicator 使用
- Android自动滚动 轮播循环的ViewPager
- Android自动滚动 轮播循环的ViewPager
- Android自动滚动 轮播循环的ViewPager
- Android自动滚动 轮播循环的ViewPager
- Android自动滚动 轮播循环的ViewPager
- Android自动滚动 轮播循环的ViewPager
- 自动循环轮播的Viewpager
- Android轮播循环ViewPager
- Android ViewPager 循环轮播
- 使用ViewPager实现自动无限循环的轮播
- 自动滚动轮播循环的ViewPager
- Android 无限循环且支持自动滚动的ViewPager
- Android ViewPager的无限循环与自动滚动实现
- 轮播循环的Viewpager
- android viewpager实现无限循环自动滚动
- RecyclerView 水平滚动+自动循环轮播
- Android中可无限循环轮播的ViewPager
- viewpager循环滚动和自动轮播的问题
- android volume level adjustment
- pbzip2 安装与使用
- 使用Xcode 7 beta免费真机调试iOS应用程序
- Android贴吧系统学习-----对时间的处理方法
- java中hashmap容器实现查找O(1)时间复杂度的思考
- Android自动滚动 轮播循环的ViewPager
- Hadoop 2.0中用户安全伪装/模仿机制实现原理
- Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
- jquery 表格中动态添加、删除行与子行(存在一点点小bug,待完善)
- 欢迎使用CSDN-markdown编辑器
- java static 作用
- Access语句语法
- Codevs 1044 拦截导弹
- Thread-Specific Data(线程私有数据)