Android使用ViewPager实现轮播图(自动和手动)
源码链接
效果图
自动手动轮播图
具体功能:
1.自动轮播
2.手动轮播
3.监听点击事件跳转界面
4.每个图片可加标题(我的图片颜色太鲜艳了,就没有让文字显示)
实现步骤:
1.创建显示图片和文字描述的carousel_item.xml文件
文章图片
carousel_item.xml 2.创建对应的是实体类ImageTitleBean,定义imageId和title属性
文章图片
ImageTitleBean 3.使用帧布局显示ViewPager和指示器的界面,图片到第几页时指示器跟着改变,carousel.xml文件
文章图片
carousel.xml 4.创建java类继承自FrameLayout,动态地为上一步创建的界面添加数据以及设置显示方式
4.1加载视图carousel.xml,绑定ViewPager和放指示器的线性布局
文章图片
4.2为适配器设置集合数据,当i=0时使用Glide框架加载最后一张图片,标题显示最后一个标题,当i=最后一页时,图片加载第一张,标题也同样处理,其他的都按照加载第i-1张图片处理
文章图片
4.3创建适配器继承自PagerAdapter,在instantiateItem方法中设置监听
文章图片
接口回调步骤:
文章图片
4.3.1创建接口OnItemClickListener,声明方法onItemClick()
4.3.2声明私有的监听器
4.3.3提供设置监听器的公共方法
4.3.4在点击处实现onItemClick()方法
4.3为ViewPager设置适配器,从当前从1开始,为ViewPager设置页面监听,当页面被选中时,指示器会放大;
文章图片
如果界面滚动了,获取当前的item,如果item==0,就设置为最后一个,如果,item==count+1,就设置为第一个,这样可以实现第一个图片和最后一个图片切换时不会出现闪现或卡顿的画面
5.设置指示器,创建和图片数量同样多的视图,布置间距,大小和背景资源,将它们添加进入LinearLayout,默认第一个未选中,其他未选中。
文章图片
这里用到了SparseBooleanArray,它是用来存储布尔值的,类似于key,value,根据其中存放的值来判断是否被选中
6.使用多线程控制图片每3秒换一次,handler发送消息,Runnable执行任务设置CurrentItem值变化
文章图片
7.在MainActivity中设置数据源
文章图片
8.实现轮播图的监听方法
【Android使用ViewPager实现轮播图(自动和手动)】
文章图片
推荐阅读
- android第三方框架(五)ButterKnife
- 由浅入深理解AOP
- 【译】20个更有效地使用谷歌搜索的技巧
- mybatisplus如何在xml的连表查询中使用queryWrapper
- MybatisPlus|MybatisPlus LambdaQueryWrapper使用int默认值的坑及解决
- MybatisPlus使用queryWrapper如何实现复杂查询
- Android中的AES加密-下
- 带有Hilt的Android上的依赖注入
- iOS中的Block
- Linux下面如何查看tomcat已经使用多少线程