美文网首页android杂DesignAndroid知识
BottomNavigationView简单使用

BottomNavigationView简单使用

作者: dodo_lihao | 来源:发表于2016-10-27 12:08 被阅读3135次

简单说明

之前见过类似这个库, 是带ripple效果的
不记得具体地址了,和这个类似
https://github.com/Ashok-Varma/BottomNavigation

还有:
https://github.com/armcha/LuseenBottomNavigation

在看 简友:[英勇青铜5] 文章的时候
http://www.jianshu.com/users/8edc8ef5fef3/latest_articles

发现,在 com.android.support:design:25.0.0 中
有对应的类支持
可能是自己其他方面事情的原因,android的代码量现在减少了很多,包括去了解新东西


大体效果

和之前的一些切换差不多
只是多了一个动画效果


或者简单padding一下,放到靠中间一点的位置(或者别的地方也行)


简单使用

添加比较简单
大体分为下面几部

  • 在 build.gradle 文件中增加依赖:
    compile 'com.android.support:design:25.0.0'

  • 在 res/menu/ 文件夹下创建一个 xml 文件
    没有menu文件夹,则自己创建一个即可
    将其xml文件,命名为 xxx_xxx.xml,自己的是 bottom_navigation_main.xml

    • 内容大体为:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item
android:id="@+id/basketball"
android:enabled="true"
android:icon="@android:drawable/ic_menu_call"
android:title="basketball"
app:showAsAction="ifRoom" />
<item
android:id="@+id/football"
android:enabled="true"
android:icon="@android:drawable/ic_popup_reminder"
android:title="football"
app:showAsAction="ifRoom" />

<item
    android:id="@+id/volleyball"
    android:enabled="true"
    android:icon="@android:drawable/ic_dialog_info"
    android:title="volleyball"
    app:showAsAction="ifRoom" />

<item
    android:id="@+id/dodo"
    android:enabled="true"
    android:icon="@android:drawable/ic_input_add"
    android:title="dodo"
    app:showAsAction="ifRoom" />

</menu>

- 写对应的layout
  自己添加了一个TextView,切换后,修改TextView,表示切换:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.aohuan.demo.bottomnavigation.MainActivity">

<!--android:paddingBottom="@dimen/activity_vertical_margin"-->
<!--android:paddingLeft="@dimen/activity_horizontal_margin"-->
<!--android:paddingRight="@dimen/activity_horizontal_margin"-->
<!--android:paddingTop="@dimen/activity_vertical_margin"-->
<!--android:background="@android:color/holo_red_light"-->

<TextView
    android:id="@+id/tv_dodo"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:text="BASKETBALL" />

<android.support.design.widget.BottomNavigationView
    android:id="@+id/bottom_navigation"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    app:itemBackground="@color/colorPrimary"
    app:itemIconTint="@color/white"
    app:itemTextColor="@color/colorAccent"
    app:menu="@menu/bottom_navigation_main" />

</RelativeLayout>


- Activity只是简单调用

package com.aohuan.demo.bottomnavigation;

import android.support.annotation.NonNull;
import android.support.design.widget.BottomNavigationView;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.MenuItem;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private TextView mTvDodo;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mTvDodo = (TextView) findViewById(R.id.tv_dodo);
    BottomNavigationView bottomNavigationView = (BottomNavigationView)
            findViewById(R.id.bottom_navigation);
    bottomNavigationView.setOnNavigationItemSelectedListener(
        new BottomNavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                switch (item.getItemId()) {
                }
                mTvDodo.setText(item.getTitle().toString().toUpperCase());
                return false;
            }
        }
    );
}

}


---
### 简单小节
这个控件用起来还是挺方便的
可以根据自己的需求,再次进行封装
具体的源码,也很短
也就300多行
里面关联了 BottomNavigationMenuView, BottomNavigationPresenter, MenuBuilder 等类
其中, MenuBuilder 比较复杂
对应的响应,通过内部接口OnNavigationItemSelectedListener 去Invoke回传

最近代码量很少,自己多花点时间看看组件,写写demo

具体代码,可以见
https://github.com/2954722256/use_little_demo
对应 bottomnavigation 的 Module

相关文章

网友评论

  • 寒平洛一:做成那种普通的tab怎么做,去掉点击时文字和图标的缩放动画
    寒平洛一:@dodo_lihao 感谢您的解答 :blush:
    dodo_lihao:@寒平洛一 官方的貌似设置不了,自己又看了下文档,也没有提到你说的这种方式。文章开头有2个别人写的库,自己运行过,可以实现你要的效果。
  • 皮球二二:请问你说的比例是不是指高度?
    皮球二二:@dodo_lihao 我as没有跟jenkins关联,我只是推到git上,然后jenkins自己去触发检测了
    dodo_lihao:@r17171709 应该是第一感觉吧,也不存在宽度高度,就是点一下会变大的比例,开始不适应。
    dodo_lihao:@r17171709 谢谢您的留言,您写文章也很好,向您学习。您用的jenkins,之前自己弄过一段时间,可以集成svn分析了,只是看android studio有个配置,自己android studio一直没有连接上自己的jenkins。
  • 英勇青铜5:使用很方便。就是第一眼看过去比例会有点怪
    dodo_lihao:@英勇青铜5 谢谢你的文章,自己才知道design的25包包中有这个东西。的确第一眼看起来有点怪。如果有配置设置就好了

本文标题:BottomNavigationView简单使用

本文链接:https://www.haomeiwen.com/subject/suaduttx.html