Android 底部栏 新组件 BottomNavigationView
HildredY25
8年前
<p>现在我们大多数 底部栏 应该沉浸在 <strong>tablayout +view pager</strong> 的情况 。</p> <p>当然 我相信 还有不少数的人 在使用 <strong>radiogroup</strong> 哈哈 说的是不是你 ,反正我是用的tablayout。。。那今天就分享一下这两篇 <strong>BottomNavigationView</strong> 文章 其实用啊很简单 ,效果还不错</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/fc37328f6fd70277a3b893d849676354.gif"></p> <p style="text-align:center">封装好的.gif</p> <h2><strong>概述</strong></h2> <p>BottomNavigationView 很早之前就在 Material Design 中出现了,但是直到 Android Support Library 25 中才增加了 BottomNavigationView 控件。展示如图:</p> <p style="text-align:center"><img src="https://simg.open-open.com/show/e5da623ec9947fd5b3de1ab4ca659a7f.jpg"></p> <p style="text-align:center">8E42C3D8-E597-40AA-BDB2-BDC43DEF6B68.png</p> <h2><strong>优点</strong></h2> <p>使用很方便;过度动画效果不错;不用改变颜色来标记状态,也能有直观的选中状态</p> <p>素材图片是通过一个Android Stuido插件android material design icon generator,进行下载的。这个插件中有官方全套的Material Design图片素材,安装这个插件后,可以通过new最后一个选项Material Design Icon进行下载想要素材,也可以在布局文件窗口直接快捷键ctrl + alt +m进入下载界面</p> <h2><strong>代码部分</strong></h2> <ul> <li> <p>布局文件</p> </li> </ul> <pre> <code class="language-java"><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <android.support.design.widget.BottomNavigationView android:id="@+id/bnv_bottom_activity" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignParentBottom="true" app:itemBackground="@color/colorAccent" app:itemIconTint="@android:color/white" app:itemTextColor="@android:color/white" app:menu="@menu/bottom_view" /> </RelativeLayout></code></pre> <ul> <li> <p>创建一个menu文件夹,新建名字为bottom_view.xml的Menu resource文件</p> </li> </ul> <pre> <code class="language-java"><?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:icon="@drawable/ic_account_balance_white_24dp" android:title="首页" /> <item android:icon="@drawable/ic_face_white_24dp" android:title="好友" /> <item android:icon="@drawable/ic_accessibility_white_24dp" android:title="广场" /> <item android:icon="@drawable/ic_settings_white_24dp" android:title="设置" /> </menu></code></pre> <ul> <li> <p>在Activity使用</p> </li> </ul> <pre> <code class="language-java">public class BottomViewActivity extends AppCompatActivity { private MenuItem lastItem; // 上一个选中的item @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bottom_view); initView(); } /** * 初始化 */ private void initView() { BottomNavigationView bnv = (BottomNavigationView) findViewById(R.id.bnv_bottom_activity); //拿到默认选中的item lastItem = bnv.getMenu().getItem(0); //点击选择item bnv.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() { @Override public boolean onNavigationItemSelected(@NonNull MenuItem item) { if (lastItem != item) { // 判断当前点击是否为item自身 lastItem = item; String title = item.getTitle().toString(); Toast.makeText(BottomViewActivity.this, title, Toast.LENGTH_LONG).show(); return true; } return false; } }); } }</code></pre> <p> </p> <p>来自:http://www.jianshu.com/p/2bd1d1f35465</p> <p> </p>