Android 使使用用ViewPager 自自动动滚滚动动循循环环轮轮播播效效果果
本文主要给大家介绍viewpager 自动播放,循环滚动的效果,对android viewpager滚动相关知识感兴趣的朋友可以
参考下本篇文章
对Android 利用ViewPager实现图 可以左右循环滑动效果,感兴趣的朋友可以直接点击查看内容详情。
主要介绍如何实现ViewPager 自动播放,循环滚动的效果及使用。顺便解决ViewPager嵌套(ViewPager inside ViewPag
er)影响触摸滑动及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(dou le)即可。
2、、使使用用
(1) 引入公共
引入Android Auto Scroll ViewPager@Githu 作为你项目的li rary(如何拉取代码及添加公共 )。
(2) 调用
仅需简单两步 :
a. 布布局局定定义
Java
android:id="@+id/view_pager"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
代替一般的ViewPager定义
. 启动ViewPager 自动滚动
startAutoScroll() 启动自动滚动
stopAutoScroll() 停止自动滚动
3、、设置置
setInterval(long) 设置自动滚动的间隔时间,单位为毫秒
setDirection(int) 设置自动滚动的方向,默认向右
setCycle( oolean) 是