??? 近期有需要遮咖,要做一個類似于網(wǎng)易新聞首頁中的可滑動標(biāo)題欄 TabLayout靖榕,根據(jù)大神寫的 FlycoTabLayout 改造了一下挚躯,可以加載網(wǎng)絡(luò)圖片忍捡,主要實現(xiàn)內(nèi)容如下:
??? 1. 可配置標(biāo)題選中效果(下劃線/上三角/圓角矩形或橢圓)锤岸;
??? 2. 可配置 TabLayout 中顯示文字或網(wǎng)絡(luò)圖片竖幔,可配置文字或圖片選中繪制顏色;
??? 3. 借助 Glide 展示加載網(wǎng)絡(luò)或本地圖標(biāo)是偷;
??? 4. Fragment 懶加載
??? 1. 類似于網(wǎng)易新聞的第一項首頁拳氢,主要布局基本上是一個可滑動的頂部 TabLayout 和一個裝載多個 Fragment 的 ViewPager。這樣先解決 ViewPager 加載 Fragment 的問題蛋铆,一般為了程序的運行效率馋评,會用到 Fragmentd 的懶加載,網(wǎng)上有太多大神的例子了刺啦,并且小菜研究不深入留特,主要有一個坑告知大家,在 Fragment 的 Adapter 中的方法需要注釋掉玛瘸,可避免默認(rèn)加載3個或多個 Fragment蜕青。
? ? @Override
??? public void destroyItem(ViewGroup container, int position, Object object) {
??? //? ? ? ? container.removeView((View) object);
??? }
? ? 2. 在 FlycoTabLayout 中選擇一個比較符合需求的樣式,里面主要是對文字的展示糊渊,小菜的需求是可以加載網(wǎng)絡(luò)圖標(biāo)右核。只是在里面添加了幾個小方法支持一下,自己寫了一個 setViewPager(mViewPager, 1, mTitleIconList);第一個參數(shù)代表 ViewPager渺绒;第二個參數(shù)0代表展示文字的贺喝,1代表展示圖標(biāo)的菱鸥;第三個參數(shù)代表需要展示的圖標(biāo)的列表。
??? 3. Glide加載網(wǎng)絡(luò)或本地圖標(biāo)躏鱼,封裝了一個 BitmapUtil.tintBitmap 的小方法對Bitmap進(jìn)行繪制顏色氮采,若圖標(biāo)列表中某幾項為空時可默認(rèn)加載固定的一個圖標(biāo)。
??? 4. 對于文字或圖標(biāo)的選中顏色染苛;選中狀態(tài)均放在一個 config.xml 文件中扳抽,方便開發(fā)人員或其他人員修改。
?? GitHub 源碼
??? 本人是一個 Android 小菜殖侵,很多知識點理解都不到位贸呢,代碼寫的也僅限于可運行階段,有好的提議希望大家多多指點校正拢军。