背景:为什么有这个库,在经常开发中,会碰到,显示广告位图片,精彩推荐,及比较好的,希望能直观显示到用户看的。那么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效果图

第一时间获得博客更新提醒,以及更多android干货,源码分析,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码,即可关注。

SuperIndicator开源库源码分析相关推荐

  1. SEAL开源库源码02

    SEAL开源库源码02 本篇的最终目的是要分析 seal/modulus.h 文章目录 SEAL开源库源码02 seal/version.h seal/util/hestdparms.h 128-bi ...

  2. 开源项目源码分析(Kickstarter-iOS )(一)

    开源项目源码分析(Kickstarter-iOS )(一) 1.Kickstarter开源项目简介 2. Kickstarter项目结构 2.1 Makefile 文件 2.2 Git submodu ...

  3. SEAL开源库源码10

    SEAL开源库源码10 文章目录 SEAL开源库源码10 seal/evaluator.h Evaluator 类 构造函数,利用 context 来构造 negate_inplace 和 negat ...

  4. SEAL开源库源码12

    SEAL开源库源码12 文章目录 SEAL开源库源码12 5_ckks_basics.cpp example_ckks_basics 函数 6_rotation.cpp example_rotatio ...

  5. SEAL开源库源码01

    SEAL开源库源码01 文章目录 SEAL开源库源码01 seal/util/defines.h 通用的判断函数 将x输出为字符串 字符串的拼接 检查double类型是否是64比特 检查int是否为3 ...

  6. 《微信小程序-进阶篇》Lin-ui组件库源码分析-列表组件List(一)

    大家好,这是小程序系列的第二十篇文章,在这一个阶段,我们的目标是 由简单入手,逐渐的可以较为深入的了解组件化开发,从本文开始,将记录分享lin-ui的源码分析,期望通过对lin-ui源码的学习能加深组 ...

  7. HEAAN开源库源码(一)

    HEAAN开源库源码 文章目录 HEAAN开源库源码 HEAAN.h HEAAN.cpp TimeUtils.h TimeUtils.cpp TestScheme.h TestScheme.cpp S ...

  8. Android主流三方库源码分析(九、深入理解EventBus源码)

    一.EventBus使用流程概念 1.Android事件发布/订阅框架 2.事件传递既可用于Android四大组件间通信 3.EventBus的优点是代码简洁,使用简单,事件发布.订阅充分解耦 4.首 ...

  9. sigslot库源码分析

    言归正传,sigslot是一个用标准C++语法实现的信号与槽机制的函数库,类型和线程安全.提到信号与槽机制,恐怕最容易想到的就是大名鼎鼎的Qt所支持的对象之间通信的模式吧.不过这里的信号与槽虽然在概念 ...

  10. surprise库源码分析

    最近工作上需要使用到协同过滤,来计算相似度,因此根据https://blog.csdn.net/weixin_43849063/article/details/111500236的步骤对surpris ...

最新文章

  1. MySQL环境配置和入门讲解!
  2. Javabean学习纪要
  3. c/c++ 函数、常量、指针和数组的关系梳理
  4. 前端画面-下拉后滚动
  5. str转list_数据运算030篇字符串处理str_dec的局限
  6. emacs php,如何在Emacs中关闭php-indent警告
  7. 外企面试官最爱提的10个问题
  8. 【测试点0分析】1009 Product of Polynomials (25 分)
  9. hive的metatable学习
  10. git为私有仓库设置密码_真香!在局域网下行云流水般使用git
  11. phpcmsV9 自定义分页函数与调用 - 不影响后台SQL分页
  12. 线性代数 【22】 抽象的向量空间
  13. win32开发(调试)
  14. 为什么模板函数的声明和实现都放在.h文件中
  15. java什么叫元素_java-什么是HTTP标头元素?
  16. 【LeetCode】【数组】题号:*498,对角线遍历
  17. python图书馆管理系统源代码_python代码实现图书管理系统
  18. 前后端开发接口文档模板(登录、注册、项目发布与需求发布)
  19. 【python数据分析】亚太地区的商学院(商务与经济统计案例3-3)数据分析
  20. macOS上使用aircrack-ng暴力破解Wi-Fi密码

热门文章

  1. mysql中dint_mysql常用操作——数据库和表的操作1(共2页)
  2. 图形大小_光伏电池正面图形设计优化
  3. linux下copy命令c实现,C语言自己实现linux下cp文件复制命令
  4. 关于如何将DB2中的非空约束删除
  5. 类的继承与派生的基础学习
  6. 深刻理解Tensor的概念及其常见的操作_以Pytorch框架为例
  7. 论文阅读笔记(八)——Ultra-thin MobileNet
  8. windows操作系统自带的端口TCP转发
  9. 视频+课件|基于多视图几何方式的三维重建
  10. CatBoost之算法解析(Kaggle常用模型)