近期有需要,要做一個類似于網易新聞首頁中的可滑動標題欄 TabLayout,根據大神寫的 FlycoTabLayout 改造了一下,可以加載網絡圖片,主要實現內容如下:
1. 可配置標題選中效果(下劃線/上三角/圓角矩形或橢圓);
2. 可配置 TabLayout 中顯示文字或網絡圖片,可配置文字或圖片選中繪制顏色;
3. 借助 Glide 展示加載網絡或本地圖標;
4. Fragment 懶加載
1. 類似于網易新聞的第一項首頁,主要布局基本上是一個可滑動的頂部 TabLayout 和一個裝載多個 Fragment 的 ViewPager。這樣先解決 ViewPager 加載 Fragment 的問題,一般為了程序的運行效率,會用到 Fragmentd 的懶加載,網上有太多大神的例子了,并且小菜研究不深入,主要有一個坑告知大家,在 Fragment 的 Adapter 中的方法需要注釋掉,可避免默認加載3個或多個 Fragment。
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//? ? ? ? container.removeView((View) object);
}
2. 在 FlycoTabLayout 中選擇一個比較符合需求的樣式,里面主要是對文字的展示,小菜的需求是可以加載網絡圖標。只是在里面添加了幾個小方法支持一下,自己寫了一個 setViewPager(mViewPager, 1, mTitleIconList);第一個參數代表 ViewPager;第二個參數0代表展示文字的,1代表展示圖標的;第三個參數代表需要展示的圖標的列表。
3. Glide加載網絡或本地圖標,封裝了一個 BitmapUtil.tintBitmap 的小方法對Bitmap進行繪制顏色,若圖標列表中某幾項為空時可默認加載固定的一個圖標。
4. 對于文字或圖標的選中顏色;選中狀態均放在一個 config.xml 文件中,方便開發人員或其他人員修改。
標題欄為文字的TabLayout
標題欄為圖標的TabLayout
本人是一個 Android 小菜,很多知識點理解都不到位,代碼寫的也僅限于可運行階段,有好的提議希望大家多多指點校正。