您的位置:

打造高效Android底部导航栏

一、准备工作

底部导航栏是Android应用中常见的一种导航方式,在用户使用过程中具有方便、直观的优点。为了实现一个高效的底部导航栏,我们需要从以下几个方面做好准备工作。

1、引入第三方库

Android官方提供了BottomNavigationView控件可以实现底部导航栏的基本功能,但是如果我们想要实现一些高级功能(如动态图标、未读消息提醒等),则需要使用第三方库。BottomNavigationViewEx是一款比较实用的第三方库,可以用于对BottomNavigationView控件的扩展,可以支持动态图标、未读消息提醒、超过3个item时可以滚动等一系列的功能。

2、设计底部导航栏图标

底部导航栏上的图标是用户使用的最直观入口,应该选择易于识别、易于理解的图标,可以参考Material Design中规定的系统图标, 保证图标的可见性和辨识度。

3、规划导航栏布局

在布局的设计中,应该考虑到BottomNavigationView作为底部导航栏的核心,需要占用固定的高度,从而限制界面中其它部分的高度。在设计底部导航栏中,需要考虑合理的布局设计,保证各个Tab之间的分隔不模糊,布局不出现错位现象。


dependencies {
    implementation 'com.android.support:design:28.0.0'
    implementation 'com.github.ittianyu:BottomNavigationViewEx:2.0.4'
}

二、实现底部导航栏

1、使用BottomNavigationView

在xml布局文件中,需要使用BottomNavigationView控件对底部导航栏进行实现。例如:


<android.support.design.widget.BottomNavigationView
    android:id="@+id/navigation"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:layout_gravity="bottom"
    app:itemBackground="@color/colorPrimary"
    app:itemIconTint="@color/bottom_navigation_colors_selector"
    app:itemTextColor="@color/bottom_navigation_colors_selector"
    app:menu="@menu/navigation" />

其中,id是唯一标志导航栏的参数,layout_width和layout_height分别为导航栏的宽度和高度,itemBackground为导航栏的背景颜色,itemIconTint和itemTextColor为导航栏上图标和文本的颜色,app:menu="@menu/navigation"为导航栏中的菜单项,需要在res/menu/目录下新建一个menu文件夹,并在其中新建一个xml布局文件navigation.xml,如下所示:


<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">

    <item
        android:id="@+id/navigation_home"
        android:icon="@drawable/ic_home"
        android:title="Home" />

    <item
        android:id="@+id/navigation_dashboard"
        android:icon="@drawable/ic_dashboard"
        android:title="Dashboard" />

    <item
        android:id="@+id/navigation_notifications"
        android:icon="@drawable/ic_notifications"
        android:title="Notifications" />

</menu>

其中,id为每个菜单项的唯一标志,icon为每个菜单项的图标,title为每个菜单项的标题。

2、使用BottomNavigationViewEx扩展库

如果想要实现一些高级功能(如动态图标、未读消息提醒等),需要使用BottomNavigationViewEx扩展库。

在xml布局文件中,需要使用com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx控件对底部导航栏进行实现。例如:


<com.ittianyu.bottomnavigationviewex.BottomNavigationViewEx
    android:id="@+id/navigation"
    android:layout_width="match_parent"
    android:layout_height="56dp"
    android:layout_gravity="bottom"
    app:itemBackground="@color/colorPrimary"
    app:itemIconTint="@color/bottom_navigation_colors_selector"
    app:itemTextColor="@color/bottom_navigation_colors_selector"
    app:menu="@menu/navigation"
    app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"
    app:tab_mode="fixed"
    app:tab_animation="ripple" />

其中,必须添加的两个参数是app:layout_behavior="@string/hide_bottom_view_on_scroll_behavior"和app:tab_animation="ripple",其中前者表示在滚动界面时可以隐藏底部导航栏,后者表示选中图标时有一个波纹效果,当然还有很多可选参数可以根据具体需求进行设置。

三、示例代码

下面是一个完整的示例代码,包含了底部导航栏的基本实现和BottomNavigationViewEx扩展库的使用示例:


public class MainActivity extends AppCompatActivity {
    private BottomNavigationViewEx mBottomNavigationViewEx;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
    }

    private void initView() {
        mBottomNavigationViewEx = findViewById(R.id.navigation);
        mBottomNavigationViewEx.enableAnimation(false);
        mBottomNavigationViewEx.enableShiftingMode(false);
        mBottomNavigationViewEx.enableItemShiftingMode(false);
        mBottomNavigationViewEx.setOnNavigationItemSelectedListener(
                new BottomNavigationView.OnNavigationItemSelectedListener() {
                    @Override
                    public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
                        switch (menuItem.getItemId()) {
                            case R.id.navigation_home:
                                // do something
                                return true;
                            case R.id.navigation_dashboard:
                                // do something
                                return true;
                            case R.id.navigation_notifications:
                                // do something
                                return true;
                        }
                        return false;
                    }
                });
    }
}

其中,enableAnimation表示禁用默认动画、enableShiftingMode表示禁用默认的移位模式、enableItemShiftingMode表示禁用默认的移位模式,这些可以防止界面抖动、提高UI效率。

四、总结

通过使用BottomNavigationView控件和BottomNavigationViewEx扩展库,我们可以轻松地实现一个高效的Android底部导航栏,为用户提供方便、直观的界面操作。

打造高效Android底部导航栏

2023-05-14
Android Studio底部导航栏的完美实现

在Android应用程序开发中,底部导航栏是一种常用的UI设计元素,用于在不同的页面之间进行快速导航。在Android Studio中,我们可以很方便地使用底部导航栏来实现这一功能。本文将介绍Andr

2023-12-08
底部导航栏的设计与应用

2023-05-18
Android手机导航栏示范

2023-05-14
提升用户体验的Android底部导航设计技巧

2023-05-14
HTML底部导航栏

2023-05-20
Android Navigation:打造用户友好的导航栏体

2023-05-14
Android Q中的全新手势导航

2023-05-14
Android自定义View实现导航栏

导航栏是Android应用的一个重要组成部分,它可以帮助用户快速切换应用内的页面,提高用户体验。在实际开发中,我们经常会遇到导航栏的定制需求,而自定义View就成了一个很好的选择。本文将介绍如何使用自

2023-12-08
Android开发:如何隐藏状态栏

2023-05-14
Android APP侧边栏:提升用户体验的必备设计元素

2023-05-14
h5网站野马导航js代码,h5网站野马导航js代码大全

本文目录一览: 1、微信H5的页面代码要怎么写 2、怎样在HTML中禁止一段代码,让一段内容不显示。 3、html里,点击左侧菜单,右侧出现文本或者图片,用js怎么写 4、androd H5混合开发

2023-12-08
安卓底部导航栏全面分析

2023-05-19
安装Android Studio:打造高效的移动应用开发环境

2023-05-14
Flutter 底部导航栏的完整详解

2023-05-22
Android Pie:更新系统和增强用户体验的新方式

Android Pie(Android 9)是谷歌近年来为Android平台推出的一次重大版本更新。它开创了一些全新的更新方式,不仅增强了设备的安全性和性能,也进一步改善和简化了用户体验。接下来我们将

2023-12-08
Android NavigationBar完全指南 - 手把

2023-05-14
提升Android应用用户体验的技巧——使用下划线营造清晰界

2023-05-14
Android活动实现全屏透明效果

2023-05-14
小程序底部导航栏如何设计实现更好的用户体验?

2023-05-16