android開發(1):底部導航條的實現 | navigation tab | activity的建立
底部導航條,在iOS中叫tabbar,在android中叫bottombar或bottom navigation,是一個常用的切換頁面的導航條。
同樣,如果有良好的第三方庫,我們應該優先考慮,能用好別人的東西,已經很厲害。
github上的roughike/BottomBar,曾經是熱度較高的庫,但是已經過時了,沒有再維護,加到專案也會遇到編譯的問題,所以這裡不使用,這裡使用的是PagerBottomTabStrip,地址是: https://github.com/tyzlmjj/PagerBottomTabStrip
使用PagerBottomTabStrip,既可實現底部導航條,也可實現頂部導航條。
(0)新增activity
上一節建立的“知音”專案是沒帶activity的,而實際的APP一定是帶activity,所以先給這個專案增加一個介面,讓它能正常執行起來。
把上一節介紹的“知音”專案開啟,選中app/src,然後在選單File->New的最下方選擇activity,如下面截圖所示:


這樣就給APP添加了一個視窗。之時,在res目錄下會建立一個layout目錄,裡面有一個activity_main.xml檔案,檔名就是在建立activity時的命名,比如:

這個xml就代表一個介面,跟iOS的view與vc一樣,介面要跟介面容器也就是activity關聯起來,而實際上,在建立xml時,activity_main.xml(介面)對應的activity也被建立起來,而且這個activity已經使用了activity_main.xml,也就是關聯起來了,請看截圖:

另外,在建立activity_main.xml時,還會自動修改了AndroidManifest.xml檔案,這個檔案是APP的總配置檔案。我們需要在這個檔案裡面加入intent-filter欄位,如下面的截圖:

如果在建立activity_main時,有勾選Launcher Activity,則會自動生成截圖上面的內容。
所以,簡單來說,要顯示一個介面,我們要做的是:
- 用File->new選單來建立一個介面(xml),不需要考慮關聯的事情(AS幫你建立介面與類並關聯了)。
- 如果有必要則修改AndroidManifest.xml檔案。
到此,就可以編譯並執行,使用真機或下載某個模擬器(按指引下載即可,但請準備10G的執行空間),就可以看到執行起來的APP。
(1)引入PagerBottomTabStrip
在app/build.gradle中加入對PagerBottomTabStrip的引用,這個跟iOS使用cocoapods來引用第三方庫一樣的道理,加入這一句:
implementation 'me.majiajie:pager-bottom-tab-strip:+'
在gradle有改動時,as會提示sync。sync一下,成功引入,command+f9編譯一下,通過編譯。
(2)在activity中使用導航條
這裡使用約束佈局,在佈局中加入PageNavigationView例項(也就是導航條)。
操作上,先在xml文字中加入me.majiajie.pagerbottomtabstrip.PageNavigationView物件跟少量屬性(比如android:id等),然後在AS的Design介面對其增加位置約束。如果沒有位置約束,則執行時會跳到(0,0)位置,那就不是底部的導航條了。如截圖:


對於佈局與約束,以後緊接著介紹,這裡先讓其較正常的執行起來即可。
這時,這個APP執行就可以看到導航條,但是還沒有tab。寫程式碼,給導航條新增tab,如截圖:

這時執行效果是這樣的:

(3)響應tab的點選
給導航條寫上事件監聽,如下圖:

至此,一個底部導航條的基本功能與效果就實現了,是不是很簡單?後繼再介紹更多的介面效果。