Android 使用ViewPager自动滚动循环轮播效果
对android 利用viewpager实现图片可以左右循环滑动效果,感兴趣的朋友可以直接点击查看内容详情。
主要介绍如何实现viewpager自动播放,循环滚动的效果及使用。顺便解决viewpager嵌套(viewpager inside viewpager)影响触摸滑动及viewpager滑动速度设置问题。
先给大家展示下效果图,喜欢的朋友可以下载源码:
1、实现
没有通过scheduledexecutorservice或timer定期执行某个任务实现,而是简单的通过handler发送消息去完成一次滚动,在完成一次滚动后发送另外一个delay的滚动消息,如此循环实现。自动滚动部分核心代码如下:
java
public void startautoscroll() { isautoscroll = true; sendscrollmessage(interval); } private void sendscrollmessage(long delaytimeinmills) { /** remove messages before, keeps one message is running at most **/ handler.removemessages(scroll_what); handler.sendemptymessagedelayed(scroll_what, delaytimeinmills); } private class myhandler extends handler { @override public void handlemessage(message msg) { super.handlemessage(msg); switch (msg.what) { case scroll_what: scrollonce(); sendscrollmessage(interval); break; } } }
至于viewpager嵌套引起子viewpager无法触摸问题是通过在子viewpager的ontouchevent中添加
java
getparent().requestdisallowintercepttouchevent(true);
禁止父控件对touch event做intercept解决的。
viewpager滑动速度的设置是通过反射的方式重新设置viewpager的scroller,改变scroller的startscroll的间隔时间完成的。调用setscrolldurationfactor(double)即可。
2、使用
(1) 引入公共库
引入android auto scroll viewpager@github作为你项目的library(如何拉取代码及添加公共库)。
(2) 调用
仅需简单两步:
a. 布局定义
java
<cn.trinea.android.view.autoscrollviewpager.autoscrollviewpager android:id="@+id/view_pager" android:layout_width="match_parent" android:layout_height="wrap_content" />
代替一般的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使用Recyclerview实现图片水平自动循环滚动效果
-
Android 使用ViewPager实现轮播图效果
-
Android使用Recyclerview实现图片水平自动循环滚动效果
-
android使用ViewPager实现轮播效果
-
Android ViewPager实现智能无限循环滚动回绕效果
-
2014.04.21(2)——— android开发实例之viewpager无限循环+自动滚动 (修改版)
-
Android使用ViewPager用代码实现图片轮播效果
-
Android ViewPager实现无限循环轮播广告位Banner效果
-
Android ViewPager无限循环滑动并可自动滚动完整实例