Material Design——BottomNavigationBar

路是一步一步走出来的,全家桶是一点点吃完的

Android Material Design的底部导航控制,我了解这个控件是因为这几天突然对知乎的底部导航栏感到好奇(知乎的客户端太好用),就通过度娘了解到了这个控件。所以今天就试着去了解它,也希望自己以后的应用可以符合MD设计风格,更规范,更具美感。

果果说:

Bottom navigation bars make it easy to explore and switch between top-level views in a single tap.
底部导航栏让我们可以更轻松的在几个顶层的视图间进行选择和查看

Three to five top-level destinations of similar importance (Alternative: A persistent navigation drawer accessible from anywhere in the app)
推荐使用3 - 5个页面切换

目录:

效果展示

该图来源:开源项目

使用方法

BottomNavigationBar的下载地址

https://github.com/Ashok-Varma/BottomNavigation

Add Dependencies

  1. 方法一:AS下使用import module导入module,并add dependencies
  2. 方法二:在Gradle中直接添加依赖compile 'com.ashokvarma.android:bottom-navigation-bar:1.2.0'

添加依赖中可能出现的问题

  • 方法一可能出现的问题:
    Error:(16, 0) Could not find property 'APP_VERSION_NAME' on project ':bottom-navigation-bar'.
    open file后发现libraryVersion = project.APP_VERSION_NAMEproject.APP_VERSION_NAME这个值并没有被声明,所以我们需要在project的gradle.properties中声明没有的属性。
    打开开源项目的gradle.properties文件,我们发现:

    
    #Change Travis when these is changed.
    
    ANDROID_BUILD_SDK_VERSION=23
    ANDROID_BUILD_TOOLS_VERSION=23.0.3
    ANDROID_BUILD_TARGET_SDK_VERSION=23
    ANDROID_BUILD_MIN_SDK_VERSION=14
    
    APP_VERSION_NAME = 1.3.0
    APP_VERSION_CODE = 6
    
    ANDROID_SUPPORT_LIBRARY_VERSION = 23.4.0
    ANDROID_PLAY_SERVICES_VERSION = 8.4.0

    复制这段代码到project的gradle.properties文件中,并根据项目情况修改特定的值。

  • 方其他可能会出现的问题:
    Error:(2, 0) Plugin with id 'com.github.dcendents.android-maven' not found
    解决办法:点我


这样我们就可以在项目中使用BottomNavigationBar了。

代码书写

在布局文件中声明一个BottomNavigationBar

<com.ashokvarma.bottomnavigation.BottomNavigationBar
        android:id="@+id/bottom_navigation_bar"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="bottom"/>

并在Activity中获取XML中的BottomNavigationBar

bottomNavigationBar = (BottomNavigationBar) findViewById(R.id.bottom_navigation_bar);

添加BottomNavigationItem

一个添加BottomNavigationItem就是一个底部导航Item:

bottomNavigationBar
                .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();

其中:addItem()参数1表示导航按钮的图片资源,参数2代表导航按钮的名称

添加对Tab的监听

bottomNavigationBar.setTabSelectedListener(new BottomNavigationBar.OnTabSelectedListener() {
    @Override
    public void onTabSelected(int position) {
        // 当第position个tab被选中时,调用此方法
        // 这里可以完成对Fragment的切换
    }

    @Override
    public void onTabUnselected(int position) {
        // 对未被选择的tab进行处理,其中pisition仍然是被选中的tab
    }   

    @Override
    public void onTabReselected(int position) {
        // 当被选中的tab 再一次被点击时调用此方法
    }
});

BottomNavigationBar的几种效果

设置导航栏模式:

java: setMode():MODE_DEFAULT,MODE_FIXED,MODE_SHIFTING

xml属性:bnbMode:mode_default,mode_fixed,mode_shifting

注意,mode需要在添加BottomNavigationItem之前进行设置,否则设置无效

设置导航栏背景样式

java:setBackgroundStyle():BACKGROUND_STYLE_DEFAULT,BACKGROUND_STYLE_STATIC,BACKGROUND_STYLE_RIPPLE

xml属性:bnbBackgroundStyle:background_style_default, background_style_static,background_style_riple

样式介绍
fixed_ripple:
fixed_ripple
shift_ripple:
shift_ripple
fixed_static:
fixed_static
shift_static:
shift_static

BottomNavigationBar的颜色

java:

 bottomNavigationBar
    .setActiveColor(R.color.primary)
    .setInActiveColor("#FFFFFF")
    .setBarBackgroundColor("#ECECEC")

xml属性:
bubActvieColor,bubBackgroundColor,bnbInactiveColor

Default Color:
1. Theme’s Primary Color will be active color.
2. Color.LTGRAY will be in-active color.
3. Color.WHITE will be background color.

各种color表示的颜色
这里写图片描述

添加Badge

BadgeItem numberBadgeItem = new BadgeItem()
                .setBorderWidth(4)//Badge内容和边界的边距 类似于内边距
                .setBackgroundColorResource(R.color.blue)//Badge的背景色
                .setText("5")//设置Badge的文字
                .setTextColor(Color.WHITE)
                .setHideOnSelect(true); //当点击这个BottomNavigationItem时,隐藏它身上的Badge

bottomNavigationBar
                .addItem(new BottomNavigationItem(R.drawable.ic_home_white_24dp, "Home").setBadgeItem(numberBadgeItem))
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值