Android使用ViewPager实现轮播图(自动和手动)

源码链接
效果图

自动手动轮播图


具体功能:

1.自动轮播

2.手动轮播

3.监听点击事件跳转界面

4.每个图片可加标题(我的图片颜色太鲜艳了,就没有让文字显示)

实现步骤:

1.创建显示图片和文字描述的carousel_item.xml文件

Android使用ViewPager实现轮播图(自动和手动)_第1张图片
carousel_item.xml

2.创建对应的是实体类ImageTitleBean,定义imageId和title属性

Android使用ViewPager实现轮播图(自动和手动)_第2张图片
ImageTitleBean

3.使用帧布局显示ViewPager和指示器的界面,图片到第几页时指示器跟着改变,carousel.xml文件

Android使用ViewPager实现轮播图(自动和手动)_第3张图片
carousel.xml

4.创建java类继承自FrameLayout,动态地为上一步创建的界面添加数据以及设置显示方式

4.1加载视图carousel.xml,绑定ViewPager和放指示器的线性布局


4.2为适配器设置集合数据,当i=0时使用Glide框架加载最后一张图片,标题显示最后一个标题,当i=最后一页时,图片加载第一张,标题也同样处理,其他的都按照加载第i-1张图片处理

Android使用ViewPager实现轮播图(自动和手动)_第4张图片

4.3创建适配器继承自PagerAdapter,在instantiateItem方法中设置监听

Android使用ViewPager实现轮播图(自动和手动)_第5张图片

接口回调步骤:

Android使用ViewPager实现轮播图(自动和手动)_第6张图片

4.3.1创建接口OnItemClickListener,声明方法onItemClick()

4.3.2声明私有的监听器

4.3.3提供设置监听器的公共方法

4.3.4在点击处实现onItemClick()方法

4.3为ViewPager设置适配器,从当前从1开始,为ViewPager设置页面监听,当页面被选中时,指示器会放大;


Android使用ViewPager实现轮播图(自动和手动)_第7张图片

如果界面滚动了,获取当前的item,如果item==0,就设置为最后一个,如果,item==count+1,就设置为第一个,这样可以实现第一个图片和最后一个图片切换时不会出现闪现或卡顿的画面

5.设置指示器,创建和图片数量同样多的视图,布置间距,大小和背景资源,将它们添加进入LinearLayout,默认第一个未选中,其他未选中。


Android使用ViewPager实现轮播图(自动和手动)_第8张图片

这里用到了SparseBooleanArray,它是用来存储布尔值的,类似于key,value,根据其中存放的值来判断是否被选中

6.使用多线程控制图片每3秒换一次,handler发送消息,Runnable执行任务设置CurrentItem值变化


Android使用ViewPager实现轮播图(自动和手动)_第9张图片


7.在MainActivity中设置数据源

Android使用ViewPager实现轮播图(自动和手动)_第10张图片

8.实现轮播图的监听方法


Android使用ViewPager实现轮播图(自动和手动)_第11张图片

你可能感兴趣的:(Android使用ViewPager实现轮播图(自动和手动))