服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - Android - Android 使用ViewPager自动滚动循环轮播效果

Android 使用ViewPager自动滚动循环轮播效果

2021-04-15 15:41Android开发网 Android

本文主要给大家介绍viewpager自动播放,循环滚动的效果,对android viewpager滚动相关知识感兴趣的朋友可以参考下本篇文章

android 利用viewpager实现图片可以左右循环滑动效果,感兴趣的朋友可以直接点击查看内容详情。

主要介绍如何实现viewpager自动播放,循环滚动的效果及使用。顺便解决viewpager嵌套(viewpager inside viewpager)影响触摸滑动及viewpager滑动速度设置问题。

先给大家展示下效果图,喜欢的朋友可以下载源码:

Android 使用ViewPager自动滚动循环轮播效果

1、实现

没有通过scheduledexecutorservice或timer定期执行某个任务实现,而是简单的通过handler发送消息去完成一次滚动,在完成一次滚动后发送另外一个delay的滚动消息,如此循环实现。自动滚动部分核心代码如下:

java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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

?
1
getparent().requestdisallowintercepttouchevent(true);

禁止父控件对touch event做intercept解决的。

viewpager滑动速度的设置是通过反射的方式重新设置viewpager的scroller,改变scroller的startscroll的间隔时间完成的。调用setscrolldurationfactor(double)即可。

2、使用

(1) 引入公共库

引入android auto scroll viewpager@github作为你项目的library(如何拉取代码及添加公共库)。

(2) 调用

仅需简单两步:

a. 布局定义

java

?
1
2
3
4
<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 使用

延伸 · 阅读

精彩推荐
  • AndroidAndroid实现固定屏幕显示的方法

    Android实现固定屏幕显示的方法

    这篇文章主要介绍了Android实现固定屏幕显示的方法,实例分析了Android屏幕固定显示所涉及的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    鉴客6192021-03-27
  • Android汇总Android视频录制中常见问题

    汇总Android视频录制中常见问题

    这篇文章主要汇总了Android视频录制中常见问题,帮助大家更好地解决Android视频录制中常见的问题,需要的朋友可以参考下...

    yh_thu5192021-04-28
  • AndroidAndroid中AsyncTask详细介绍

    Android中AsyncTask详细介绍

    这篇文章主要介绍了Android中AsyncTask详细介绍,AsyncTask是一个很常用的API,尤其异步处理数据并将数据应用到视图的操作场合,需要的朋友可以参考下...

    Android开发网7452021-03-11
  • AndroidAndroid编程解析XML方法详解(SAX,DOM与PULL)

    Android编程解析XML方法详解(SAX,DOM与PULL)

    这篇文章主要介绍了Android编程解析XML方法,结合实例形式详细分析了Android解析XML文件的常用方法与相关实现技巧,需要的朋友可以参考下...

    liuhe68810052021-05-03
  • AndroidAndroid实现Service获取当前位置(GPS+基站)的方法

    Android实现Service获取当前位置(GPS+基站)的方法

    这篇文章主要介绍了Android实现Service获取当前位置(GPS+基站)的方法,较为详细的分析了Service基于GPS位置的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    Ruthless8342021-03-31
  • AndroidAndroid界面效果UI开发资料汇总(附资料包)

    Android界面效果UI开发资料汇总(附资料包)

    android ui界面设计,友好的界面会提高用户体验度;同时也增强了android ui界面设计的难度,本文提供了一些常用开发资料(有下载哦)感兴趣的朋友可以了解下...

    Android开发网4672021-01-03
  • AndroidAndroid CardView+ViewPager实现ViewPager翻页动画的方法

    Android CardView+ViewPager实现ViewPager翻页动画的方法

    本篇文章主要介绍了Android CardView+ViewPager实现ViewPager翻页动画的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...

    Abby代黎明9602022-03-02
  • AndroidAndroid程序设计之AIDL实例详解

    Android程序设计之AIDL实例详解

    这篇文章主要介绍了Android程序设计的AIDL,以一个完整实例的形式较为详细的讲述了AIDL的原理及实现方法,需要的朋友可以参考下...

    Android开发网4642021-03-09