Android使用ViewPager实现轮播图(自动和手动)
2019-06-28 本文已影响0人
Margolu
源码链接
效果图
具体功能:
1.自动轮播
2.手动轮播
3.监听点击事件跳转界面
4.每个图片可加标题(我的图片颜色太鲜艳了,就没有让文字显示)
实现步骤:
1.创建显示图片和文字描述的carousel_item.xml文件
carousel_item.xml2.创建对应的是实体类ImageTitleBean,定义imageId和title属性
ImageTitleBean3.使用帧布局显示ViewPager和指示器的界面,图片到第几页时指示器跟着改变,carousel.xml文件
carousel.xml4.创建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,根据其中存放的值来判断是否被选中