首先先打个广告,自己写了一个AndroidBottomNavigation,扩展官方BottomNavigationView的功能,而且实现起来更加简便。Bottom-Navigation
是谷歌官方发布的android底部状态栏,它的动画效果非常的漂亮,看起来非常的让人赏心悦目。为了能够拥有相同的用户体验,google对它有着严格的设计标准,具体的要求和实例请看:官方文档。同时,谷歌还推出了BottomNavigationView
来实现这种设计。那下面就来看看BottomNavigationView
是如何实现的。
简单使用
通过BottomNavigationView
的官方文档,我们可以看到,BottomNavigationView
是在version 25.0.0
以后被添加进来的,所以在此之前的版本,要使用就需要添加的包:compile 'com.android.support:design:25.0.0'
。同时,官方还给出了简单的使用实例,这里就不在介绍了。
<android.support.design.widget.BottomNavigationView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/navigation"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_gravity="start"
app:menu="@menu/my_navigation_items" />
res/menu/my_navigation_items.xml:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/action_search"
android:title="@string/menu_search"
android:icon="@drawable/ic_search" />
<item android:id="@+id/action_settings"
android:title="@string/menu_settings"
android:icon="@drawable/ic_add" />
<item android:id="@+id/action_navigation"
android:title="@string/menu_navigation"
android:icon="@drawable/ic_action_navigation_menu" />
</menu>
这里我们看到,BottomNavigationView
的高度被限定在56dp,这个值是在官方的设计文档中明确要求的,因此当你使用大于56dp的高度时,就会有一部分空白区域流出来,同时也完全不建议使用过小的高度,这样,内部的图标或文字都可能会被裁剪掉部分。
实现原理
BottomNavigationView分析
通过阅读BottomNavigationView
源码,我们看到BottomNavigationView
直接通过继承FrameLayout实现。它里面最重要的有3个对象: