UI-BottomNavigationBar-底部導(dǎo)航欄

在開發(fā)項目中瑰枫,一般主界面被設(shè)計成含有底部導(dǎo)航欄的樣子皆刺,BottomNavigationBar就是一個Material風(fēng)格的底部導(dǎo)航欄桃漾,如下圖:

gitHub地址:https://github.com/Ashok-Varma/BottomNavigation
Demo:https://github.com/youlemei133/BottomNavigationBarSamples

基本使用

  1. 在Android Studio下添加依賴:
compile 'com.ashokvarma.android:bottom-navigation-bar:1.2.0'
  1. 在布局文件中队塘,添加布局
<com.ashokvarma.bottomnavigation.BottomNavigationBar
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:id="@+id/bottom_navigation_bar"
        />
  1. 在代碼中為BottomNavigationBar添加Item選項
bottomNavigationBar.addItem(new BottomNavigationItem(R.mipmap.ic_directions_run_white_24dp, "步行"))
                .addItem(new BottomNavigationItem(R.mipmap.ic_directions_bike_white_24dp, "騎行"))
                .addItem(new BottomNavigationItem(R.mipmap.ic_directions_bus_white_24dp, "公交"))
                .addItem(new BottomNavigationItem(R.mipmap.ic_directions_car_white_24dp, "自駕"))
                .addItem(new BottomNavigationItem(R.mipmap.ic_directions_railway_white_24dp, "火車"))
                .initialise();//所有的設(shè)置需在調(diào)用該方法前完成
  1. 添加選項卡切換事件監(jiān)聽
bottomNavigationBar.setTabSelectedListener(new BottomNavigationBar.OnTabSelectedListener() {//這里也可以使用SimpleOnTabSelectedListener
            @Override
            public void onTabSelected(int position) {//未選中 -> 選中
            }

            @Override
            public void onTabUnselected(int position) {//選中 -> 未選中
            }

            @Override
            public void onTabReselected(int position) {//選中 -> 選中
            }
        });

設(shè)置BottomNavigationBar

  1. Mode
    xml:bnbMode
    方法:setMode()
    包含3種Mode:
  • MODE_DEFAULT
    如果Item的個數(shù)<=3就會使用MODE_FIXED模式忍些,否則使用MODE_SHIFTING模式
  • MODE_FIXED
    填充模式檀头,未選中的Item會顯示文字轰异,沒有換擋動畫。
  • MODE_SHIFTING
    換擋模式暑始,未選中的Item不會顯示文字搭独,選中的會顯示文字。在切換的時候會有一個像換擋的動畫
  1. Background Style
    xml: bnbBackgroundStyle
    方法:setBackgroundStyles()
    包含3種Style:
  • BACKGROUND_STYLE_DEFAULT
    如果設(shè)置的Mode為MODE_FIXED廊镜,將使用BACKGROUND_STYLE_STATIC 牙肝。如果Mode為MODE_SHIFTING將使用BACKGROUND_STYLE_RIPPLE。

  • BACKGROUND_STYLE_STATIC
    點擊的時候沒有水波紋效果

  • BACKGROUND_STYLE_RIPPLE
    點擊的時候有水波紋效果

  1. 設(shè)置默認顏色
    xml:bnbActiveColor, bnbInactiveColor, bnbBackgroundColor
    方法:setActiveColor, setInActiveColor, setBarBackgroundColor
    例如:
bottomNavigationBar
                 .setActiveColor(R.color.primary)
                 .setInActiveColor("#FFFFFF")
                 .setBarBackgroundColor("#ECECEC")
  • in-active color
    表示未選中Item中的圖標(biāo)和文本顏色。默認為 Color.LTGRAY

  • active color :
    BACKGROUND_STYLE_STATIC下配椭,表示選中Item的圖標(biāo)和文本顏色虫溜。而在BACKGROUND_STYLE_RIPPLE下,表示整個容器的背景色股缸。默認Theme's Primary Color

  • background color :
    BACKGROUND_STYLE_STATIC下吼渡,表示整個容器的背景色。而在BACKGROUND_STYLE_RIPPLE下乓序,表示選中Item的圖標(biāo)和文本顏色寺酪。默認 Color.WHITE

  1. 定制Item的選中未選中顏色
    我們可以為每個Item設(shè)置選中未選中的顏色,如果沒有設(shè)置替劈,將繼承BottomNavigationBar設(shè)置的選中未選中顏色寄雀。
    方法:
    BottomNavigationItem.setInActiveColor() 設(shè)置Item未選中顏色方法
    BottomNavigationItem.setActiveColor() 設(shè)置Item選中顏色方法

  2. Icon的定制
    如果使用顏色的變化不足以展示一個選項Item的選中與非選中狀態(tài),可以使用BottomNavigationItem.setInActiveIcon()方法來設(shè)置陨献。
    例如:

new BottomNavigationItem(R.mipmap.ic_directions_bus_white_24dp, "公交")//這里表示選中的圖片
                        .setInactiveIcon(ContextCompat.getDrawable(this,R.mipmap.ic_launcher)))//非選中的圖片
  1. 設(shè)置自動隱藏與顯示
    如果BottomNavigationBar是在CoordinatorLayout布局里盒犹,默認設(shè)置當(dāng)向下滑動時會自動隱藏它,當(dāng)向上滑動時會自動顯示它眨业。我們可以通過setAutoHideEnabled(boolean)設(shè)置是否允許這種行為,好像這個方法木有啦急膀。

  2. 手動隱藏與顯示
    我們可以在任何時間,通過代碼隱藏或顯示BottomNavigationBar
    方法:

bottomNavigationBar.hide();//隱藏
bottomNavigationBar.hide(true);//隱藏是否啟動動畫龄捡,這里并不能自定義動畫
bottomNavigationBar.unHide();//顯示
bottomNavigationBar.hide(true);//隱藏是否啟動動畫卓嫂,這里并不能自定義動畫

實際上這里都是通過屬性動畫ViewPropertyAnimatorCompat來完成的,所以如果我們要自定義它的隱藏和顯示的話聘殖,通過屬性動畫即可實現(xiàn)晨雳。

  1. 為Item添加Badge
    什么是Badge,看圖說話:

上面紅色的圖標(biāo)就是Badge了,那如何使用呢奸腺?

  1. 創(chuàng)建一個BadgeItem
badge=new BadgeItem()
//                .setBorderWidth(2)//Badge的Border(邊界)寬度
//                .setBorderColor("#FF0000")//Badge的Border顏色
//                .setBackgroundColor("#9ACD32")//Badge背景顏色
//                .setGravity(Gravity.RIGHT| Gravity.TOP)//位置餐禁,默認右上角
              .setText("2")//顯示的文本
//                .setTextColor("#F0F8FF")//文本顏色
//                .setAnimationDuration(2000)
//                .setHideOnSelect(true)//當(dāng)選中狀態(tài)時消失,非選中狀態(tài)顯示
  1. 為BottomNavigationItem設(shè)置BadgeItem
new BottomNavigationItem(R.mipmap.ic_directions_bike_white_24dp, "騎行").setBadgeItem(badge)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末突照,一起剝皮案震驚了整個濱河市帮非,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌讹蘑,老刑警劉巖末盔,帶你破解...
    沈念sama閱讀 212,816評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異衔肢,居然都是意外死亡庄岖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,729評論 3 385
  • 文/潘曉璐 我一進店門角骤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來隅忿,“玉大人心剥,你說我怎么就攤上這事”惩” “怎么了优烧?”我有些...
    開封第一講書人閱讀 158,300評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長链峭。 經(jīng)常有香客問我畦娄,道長,這世上最難降的妖魔是什么弊仪? 我笑而不...
    開封第一講書人閱讀 56,780評論 1 285
  • 正文 為了忘掉前任熙卡,我火速辦了婚禮,結(jié)果婚禮上励饵,老公的妹妹穿的比我還像新娘驳癌。我一直安慰自己,他們只是感情好役听,可當(dāng)我...
    茶點故事閱讀 65,890評論 6 385
  • 文/花漫 我一把揭開白布颓鲜。 她就那樣靜靜地躺著,像睡著了一般典予。 火紅的嫁衣襯著肌膚如雪甜滨。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 50,084評論 1 291
  • 那天瘤袖,我揣著相機與錄音衣摩,去河邊找鬼。 笑死孽椰,一個胖子當(dāng)著我的面吹牛昭娩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播黍匾,決...
    沈念sama閱讀 39,151評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼呛梆!你這毒婦竟也來了锐涯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,912評論 0 268
  • 序言:老撾萬榮一對情侶失蹤填物,失蹤者是張志新(化名)和其女友劉穎纹腌,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體滞磺,經(jīng)...
    沈念sama閱讀 44,355評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡升薯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,666評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了击困。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片涎劈。...
    茶點故事閱讀 38,809評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡广凸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蛛枚,到底是詐尸還是另有隱情谅海,我是刑警寧澤,帶...
    沈念sama閱讀 34,504評論 4 334
  • 正文 年R本政府宣布蹦浦,位于F島的核電站扭吁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏盲镶。R本人自食惡果不足惜侥袜,卻給世界環(huán)境...
    茶點故事閱讀 40,150評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望溉贿。 院中可真熱鬧系馆,春花似錦、人聲如沸顽照。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,882評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽代兵。三九已至尼酿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間植影,已是汗流浹背裳擎。 一陣腳步聲響...
    開封第一講書人閱讀 32,121評論 1 267
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留思币,地道東北人鹿响。 一個月前我還...
    沈念sama閱讀 46,628評論 2 362
  • 正文 我出身青樓,卻偏偏與公主長得像谷饿,于是被迫代替她去往敵國和親惶我。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,724評論 2 351

推薦閱讀更多精彩內(nèi)容