天天看點

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 哦:

著作權歸作者所有,轉載請聯系作者獲得授權,并标注“簡書作者”。

繼續閱讀