背景:为什么有这个库,在经常开发中,会碰到,显示广告位图片,精彩推荐,及比较好的,希望能直观显示到用户看的。那么SuperIndicator正是这样一个类库。 
关于它的一些说明,github已经够详细了,这里不再说明,可以看链接:https://github.com/hejunlin2013/SuperIndicator 或者点击“阅读原文”: 
今天主要分析下它的实现思路,分为两块,一块是viewpager相关,一块是point相关

首先看下Viewpager相关,对应代码为

 

再看一下LoopPagerAdapterWrapper,实际上就是增加了一些功能。

SuperIndicator开源库源码分析_JAVA

SuperIndicator开源库源码分析_JAVA_02

 

SuperIndicator开源库源码分析_JAVA_03

SuperIndicator开源库源码分析_JAVA_04

SuperIndicator开源库源码分析_JAVA_05

SuperIndicator开源库源码分析_JAVA_06

再来看另一部分CircleIndicator,圆点相关,代码如下:

SuperIndicator开源库源码分析_JAVA_07

SuperIndicator开源库源码分析_JAVA_08

 

SuperIndicator开源库源码分析_JAVA_09

SuperIndicator开源库源码分析_JAVA_10

这个开源库比较简单,总结几个要点如下:

  • 关键是处理边缘循环部分逻辑,最后->第一个,取模得到真实位置,第一个->最后,加总count得真实postion

  • 自动轮播,用Handler,post 5s,在该轮播时,进行轮播

  • 圆点对象持有viewpager,根据viewpager的count得到自身个数

  • viewpager的pageadapter,用一个包装类,可以设置是否边缘循环,及第1个和最后一个是否要缓存起来。

  • 看下1.0.3效果图https://mp.weixin.qq.com/s/Pr6igxSSUwriOuRk0vgxPQ