天天看点

Android万能的指示器背景关于命名如何使用内建的指示器如何扩展更多源码下载:http://download.csdn.net/detail/xiangzhihong8/9571280

等,我曾经尝试着用它们,但还是被它们的可定制能力给吓退了。

Android万能的指示器背景关于命名如何使用内建的指示器如何扩展更多源码下载:http://download.csdn.net/detail/xiangzhihong8/9571280

magicindicator.gif

近期交互改版,需要在指示器上增加吸附效果(类似上图第7个),刚开始我有点懵逼,因为之前的指示器只是简单的使用了 horizontalscrollview + 横向 linearlayout ,向 linearlayout 里面添加一些 textview 当做标题,选中的时候只是简单的改变 textview 的颜色,没有任何动画,因此实现起来相对简单(项目前期时间紧迫)。这估计也是大部分应用的做法吧。

这期就不打算给大家讲原理性文章了,只讲如何集成(主要是这两天都在写这个,被媳妇骂惨了,没时间写了),后面我会有一个系列的文章来讲这个,涉及到的内容大概有:

magicindicator 原理

如何扩展 magicindicator 打造任意的切换效果

如何使用 magicindicator 来打造主流应用(诸如微信主页的切换)的指示器效果

好,我们开始。

Android万能的指示器背景关于命名如何使用内建的指示器如何扩展更多源码下载:http://download.csdn.net/detail/xiangzhihong8/9571280

paste_image.png

不要忘了添加依赖哦:

导入成功后,就可以使用啦。你需要先在布局文件里引入 magicindicator:

再在代码里面找到它,并进行简单设置:

这样,你就可以轻松的实现效果图中 今日头条 式(效果图中第一个)切换效果。

额,上面这代码明显没有和 viewpager 相关联,因此滑动 viewpager 时是看不到切换效果的,我们给 viewpager 添加一个监听器:

这样, magicindicator 就算成功引入项目啦。

注意,以上代码明显没有和 viewpager 强关联,因此在不使用 viewpager 的情况下,仍然可以使用 magicindicator。只是需要你手动调用 onpagexxx 系列方法回调即可。当然,后续我会提供帮助类来简化这个过程。 等 magicindicator 基本稳定、成型后,我会把它提交到 mavencenter 和 jcenter 中,方便大家使用。

式切换效果:

看到没有,如果你想换一个效果,只需在 getitemview 里返回不同的指示器标题(ipagertitleview),在getindicator 里返回不同的指示器(ipagerindicator)就可以啦。

当内建的指示器不能满足你的需求时,你可以轻易的扩展,如果你的需求貌似可以使用 horizontalscrollview + 横向 linearlayout 方式实现,建议继承ipagertitleview 和ipagerindicator 即可,如果不行,那就完全自定义吧,继承ipagernavigator

(导航器 —— 我觉得上面的那些效果本质是一个导航器,指示器只是包含在导航器中的一个元素而已) 吧。效果图中的最后一个效果就是如此:

当然,我可不希望每当内置指示器达不到你的需求时,你总是去继承这些个类,为了简化,我在最新的代码里增加了 commonpagertitleview,使用方法如下:

效果图:

Android万能的指示器背景关于命名如何使用内建的指示器如何扩展更多源码下载:http://download.csdn.net/detail/xiangzhihong8/9571280

custom.gif

关于扩展 magicindicator,后面会有详细的博文来讲解,敬请留意。如果你扩展 magicindicator 实现了很炫酷的指示器效果,欢迎共享出来。

magicindicator 同样考虑到了 viewpager 内容变化的情况,当你的 viewpager 内容发生变化时,除了调用 pageradapter.notifydatasetchanged ,还记得先调用 ipagernavigator.notifydatasetchanged 哦:

著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。

继续阅读