Android BottomNavigationBar底部导航控制器使用方法详解
程序员文章站
2024-02-28 16:45:16
最近google在自己推出的material design中增加了bottom navigation导航控制。android一直没有官方的导航控制器,自己实现确实是五花八门...
最近google在自己推出的material design中增加了bottom navigation导航控制。android一直没有官方的导航控制器,自己实现确实是五花八门,有了这个规定之后,就类似苹果的底部toolbar,以后我们的app就会有一致的风格,先看一张效果:
这是官方在material design中给出一张图,确实很不错。
1.bottomnavigationbar的下载地址
https://github.com/ashok-varma/bottomnavigation
2.使用的方法
2.1在gradle中添加
compile ‘com.ashokvarma.android:bottom-navigation-bar:0.9.5'
2.2布局实现
<com.ashokvarma.bottomnavigation.bottomnavigationbar android:layout_gravity="bottom" android:id="@+id/bottom_navigation_bar" android:layout_width="match_parent" android:layout_height="wrap_content"/>
2.3类中activity中添加bottomnavigationitem
bottomnavigationbar bottomnavigationbar = (bottomnavigationbar) findviewbyid(r.id.bottom_navigation_bar); bottomnavigationbar .additem(new bottomnavigationitem(r.drawable.ic_home_white_24dp, "home")) .additem(new bottomnavigationitem(r.drawable.ic_book_white_24dp, "books")) .additem(new bottomnavigationitem(r.drawable.ic_music_note_white_24dp, "music")) .additem(new bottomnavigationitem(r.drawable.ic_tv_white_24dp, "movies & tv")) .additem(new bottomnavigationitem(r.drawable.ic_videogame_asset_white_24dp, "games")) .initialise();
2.4设置事件监听器tabchangelistener
bottomnavigationbar.settabselectedlistener(new bottomnavigationbar.ontabselectedlistener(){ @override public void ontabselected(int position) { } @override public void ontabunselected(int position) {] } @override public void ontabreselected(int position) { } });
3.案例的实现
布局文件
<?xml version="1.0" encoding="utf-8"?> <relativelayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:showin="@layout/activity_navigation_view_demo" tools:context="com.lidong.demo.navigation_view.bottomnavigationbardemoactivity"> <linearlayout android:id="@+id/tb" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" /> <com.ashokvarma.bottomnavigation.bottomnavigationbar android:id="@+id/bottom_navigation_bar" android:layout_width="match_parent" android:layout_alignparentbottom="true" android:layout_height="wrap_content"/> </relativelayout>
activity的代码:
package com.lidong.demo.navigation_view; import android.app.fragmentmanager; import android.app.fragmenttransaction; import android.os.bundle; import android.support.v7.app.appcompatactivity; import android.support.v7.widget.toolbar; import android.util.log; import com.ashokvarma.bottomnavigation.bottomnavigationbar; import com.ashokvarma.bottomnavigation.bottomnavigationitem; import com.lidong.demo.r; /** * bottomnavigationbar实现 */ public class bottomnavigationbardemoactivity extends appcompatactivity implements bottomnavigationbar.ontabselectedlistener { private bottomnavigationbar bottomnavigationbar; int lastselectedposition = 0; private string tag = bottomnavigationbardemoactivity.class.getsimplename(); private locationfragment mlocationfragment; private findfragment mfindfragment; private favoritesfragment mfavoritesfragment; private bookfragment mbookfragment; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_navigation_view_demo); toolbar toolbar = (toolbar) findviewbyid(r.id.toolbar); setsupportactionbar(toolbar); bottomnavigationbar = (bottomnavigationbar) findviewbyid(r.id.bottom_navigation_bar); bottomnavigationbar .additem(new bottomnavigationitem(r.mipmap.ic_location_on_white_24dp, "位置").setactivecolor(r.color.orange)) .additem(new bottomnavigationitem(r.mipmap.ic_find_replace_white_24dp, "发现").setactivecolor(r.color.blue)) .additem(new bottomnavigationitem(r.mipmap.ic_favorite_white_24dp, "爱好").setactivecolor(r.color.green)) .additem(new bottomnavigationitem(r.mipmap.ic_book_white_24dp, "图书").setactivecolor(r.color.blue)) .setfirstselectedposition(lastselectedposition ) .initialise(); bottomnavigationbar.settabselectedlistener(this); setdefaultfragment(); } /** * 设置默认的 */ private void setdefaultfragment() { fragmentmanager fm = getfragmentmanager(); fragmenttransaction transaction = fm.begintransaction(); mlocationfragment = locationfragment.newinstance("位置"); transaction.replace(r.id.tabs, mlocationfragment); transaction.commit(); } @override public void ontabselected(int position) { log.d(tag, "ontabselected() called with: " + "position = [" + position + "]"); fragmentmanager fm = this.getfragmentmanager(); //开启事务 fragmenttransaction transaction = fm.begintransaction(); switch (position) { case 0: if (mlocationfragment == null) { mlocationfragment = locationfragment.newinstance("位置"); } transaction.replace(r.id.tb, mlocationfragment); break; case 1: if (mfindfragment == null) { mfindfragment = findfragment.newinstance("发现"); } transaction.replace(r.id.tb, mfindfragment); break; case 2: if (mfavoritesfragment == null) { mfavoritesfragment = favoritesfragment.newinstance("爱好"); } transaction.replace(r.id.tb, mfavoritesfragment); break; case 3: if (mbookfragment == null) { mbookfragment = bookfragment.newinstance("图书"); } transaction.replace(r.id.tb, mbookfragment); break; default: break; } // 事务提交 transaction.commit(); } @override public void ontabunselected(int position) { log.d(tag, "ontabunselected() called with: " + "position = [" + position + "]"); } @override public void ontabreselected(int position) { } }
fragment的代码
package com.lidong.demo.navigation_view; import android.app.fragment; import android.os.bundle; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.textview; import com.lidong.demo.r; public class locationfragment extends fragment { public static locationfragment newinstance(string param1) { locationfragment fragment = new locationfragment(); bundle args = new bundle(); args.putstring("agrs1", param1); fragment.setarguments(args); return fragment; } public locationfragment() { } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view view = inflater.inflate(r.layout.fragment_location, container, false); bundle bundle = getarguments(); string agrs1 = bundle.getstring("agrs1"); textview tv = (textview)view.findviewbyid(r.id.tv_location); tv.settext(agrs1); return view; } }
代码下载:https://github.com/lidong1665/androidrapidlibrary
代码实现起来很简单,就加载布局,添加bottomnavigationitem,设置tabchangelistener就这三步搞定底部导航控制器。
以上就是关于bottomnavigationbar底部导航控制器,希望对大家的学习有所帮助。
上一篇: java泛型学习示例
下一篇: PHP入门教程之操作符与控制结构流程详解