背景:为什么有这个库,在经常开发中,会碰到,显示广告位图片,精彩推荐,及比较好的,希望能直观显示到用户看的。那么SuperIndicator正是这样一个类库。
关于它的一些说明,github已经够详细了,这里不再说明,可以看链接:https://github.com/hejunlin2013/SuperIndicator 或者点击“阅读原文”:
今天主要分析下它的实现思路,分为两块,一块是viewpager相关,一块是point相关
首先看下Viewpager相关,对应代码为
再看一下LoopPagerAdapterWrapper,实际上就是增加了一些功能。
再来看另一部分CircleIndicator,圆点相关,代码如下:
这个开源库比较简单,总结几个要点如下:
-
关键是处理边缘循环部分逻辑,最后->第一个,取模得到真实位置,第一个->最后,加总count得真实postion
-
自动轮播,用Handler,post 5s,在该轮播时,进行轮播
-
圆点对象持有viewpager,根据viewpager的count得到自身个数
-
viewpager的pageadapter,用一个包装类,可以设置是否边缘循环,及第1个和最后一个是否要缓存起来。
-
看下1.0.3效果图https://mp.weixin.qq.com/s/Pr6igxSSUwriOuRk0vgxPQ