轮播图是绝大多数的项目都要实现的功能,因为比较常用且并不复杂,所以出现了各种各样的轮播图,今天就做一个可以自动无限轮播的轮播图。废话不多说,直接进入正题。
注:文章末尾附项目源码下载链接。
效果展示
主要功能包括:通过Handler实现自动无限轮播、小圆点背景选择器、InfiniteShufflingViewPager解决冲突、轮播图数量为1时禁止滑动、Adapter的特殊处理等。下面先看下效果:
页面布局
以下为轮播图的页面布局文件代码:该文件中使用了自定义控件InfiniteShufflingViewPager,该控件的功能包括:1.请求父控件及祖宗控件不要拦截事件;2.解决ScrollView和ViewPager的上下滑动冲突;3.当ViewPager填充的数据为1的时候,让其不能滑动;
注:文章末尾附InfiniteShufflingViewPager源码。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#333333"
android:orientation="vertical">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="180dp">
<com.wangyang.infiniteshufflingviewpager.customview.InfiniteShufflingViewPager
android:id="@+id/vp"
android:layout_width="match_parent"
android:layout_height="180dp" />
<LinearLayout
android:id="@+id/ll_point_container"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_alignParentBottom="true"
android:gravity="center"
android:orientation="horizontal"
android:paddingLeft="5dp"
android:paddingRight="5dp" />
</RelativeLayout>
</LinearLayout>