1. 程式人生 > >Android最好用的底部導航欄,GitHub最火的開源控制元件之一

Android最好用的底部導航欄,GitHub最火的開源控制元件之一

轉載自這個專案的github地址:https://github.com/xubinhong/BottomBar

這個底部導航欄的特點:

1.告別xml中的item佈局,一切icon、title統統繪製得出;

2.扁平化,由於icon、title都是繪製得出的,所以只需要一個view即可,無需父佈局

3.為你處理好碎片切換事務,告別冗餘程式碼,讓你從此光速開發

4.不怕需求變動,拔插式體驗,增刪item,只需修改1行程式碼

5.原始碼十分簡單,有助於使用者開發高度適配自身需求的底部 

使用方式

1.只需要到給出的github地址中拷貝BottomBar類到你的包下即可

2.xml中

<com.example.bottombar.BottomBar
android:background="#FFFFFF" android:id="@+id/bottom_bar" android:layout_width="match_parent" android:layout_height="46dp" android:layout_gravity="bottom" />

3.java程式碼中

BottomBar bottomBar = findViewById(R.id.bottom_bar);
bottomBar.setContainer(R.id.fl_container)
        .setTitleBeforeAndAfterColor("#999999"
, "#ff5d5e") .addItem(Fragment1.class, "首頁", R.drawable.item1_before, R.drawable.item1_after) .addItem(Fragment2.class, "訂單", R.drawable.item2_before, R.drawable.item2_after) .addItem(Fragment3.class
, "我的", R.drawable.item3_before, R.drawable.item3_after) .build();

設定了容器frame layout

設定了字型選中前後的顏色

增加了item,並且給item繫結碎片,設定選中前後的drawable以及文字

就這麼簡單的程式碼,就搞定了一切!效果如下:


而如果你正常寫一個底部導航欄是怎樣的?

1.item佈局,你還得精心設定半天

2.底部title佈局,引入若干

3.title佈局放到主佈局中

4.java程式碼中要通過findViewById找到所有item

5.給所有item設定點選事件

6.點選事件內作碎片的切換

7.當你如果要增加一個item的時候,前面的又要大幅度修改,而且程式碼冗餘程度極高

如果你對裡面icon、title的位置不滿意,有更多的api供你選擇

setTitleSize,以dp為單位

setIconWidth,圖示寬度

setIconHeight,圖示高度

setTitleIconMargin,標題圖示間距

setFirstChecked,設定第一個預設選中item

由於原始碼簡單,易於閱讀,開發者更可以自行修改原始碼

底部導航欄設計思路

根據api中獲取的引數,計算出icon、title的精確位置,並在onDraw中繪製

在onTouchEvent裡,根據觸控點,獲知點選區域,響應Icon、title的更改事件以及碎片的切換事件

真實專案實戰演練

主介面的之前的冗餘程式碼



請注意,這還是封裝之後的程式碼!

再看一下UI給我們的圖


接下來拿著BottomBar去改寫專案

1.修改xml中的程式碼為我們的BottomBar

2.拷貝我們文章上面給出的初始化程式碼,並對引數作一定的修改

3.由於UI給的圖還有詳細引數,我們還要利用修改圖示寬高,文字大小等api進行更精確的調整

調整後全部程式碼:


完美搞定了UI的要求,又大大減少了程式碼的冗餘,甚至沒有parent佈局,也沒有任何image view ,text view等控制元件,對效能也是一個巨大的提升!而且原始碼簡單,你想改就能改,實在是居家旅行,殺人滅口,必備良藥!

另一個BottomBar的實戰應用可以看:

https://blog.csdn.net/qq_36523667/article/details/79983010

再次證明了,BottomBar,實在太方便啦!

最後:

要是對現有api感到不夠,可以留言;

歡迎一起維護這個專案。