BottomNavigationView简单使用


简单说明

之前见过类似这个库, 是带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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏三流程序员的挣扎

Navigation 详解三

在 BottomNavigationActivity 中添加 Toolbar,修改主题为 NoActionBar 的。

1192
来自专栏潇涧技术专栏

Art of Android Development Reading Notes 8

《Android开发艺术探索》读书笔记 (8) 第8章 理解Window和WindowManager

861
来自专栏移动端开发

Android学习--ListView

这篇文章用于总结自己这两天学到的安卓的ListView和RecyclerView 的笔记,以及从我这个iOS开发者的角度去理解和学习这两个控件,会比较一下他们个...

2249
来自专栏Android相关

AAC---DataBinding使用

DataBinding类似于ButterKnife,可以将数据结构与XML绑定,节省了很多Activity中UI的代码,比如说findViewById等。也可以...

1793
来自专栏非著名程序员

Base封装之我的最简MVP架构

绪论 最近懒癌症犯了,好久都没写博客了,当然也在做一些东西,也在整理自己一直以来使用的一些技术点,从Retrofit到OkGO,从ListView到Recycl...

3129
来自专栏Android干货园

Base封装(一)--我的最简MVP架构

版权声明:本文为博主原创文章,转载请标明出处。 https://blog.csdn.net/lyhhj/article/details/73...

1431
来自专栏Java学习网

Android实现图片异步加载操作

Android实现图片异步加载操作 在Android开发过程中,为了防止阻塞UI,图片加载时经常采用异步的方法来加载,异步加载图片的主要流程是进行判断缓存中是...

2449
来自专栏腾讯Bugly的专栏

Android APP 快速 Pad 化实现

如何能在最快的时间内,实现一个最新版本 Android app 的 pad 化呢?从拿到一个大型手机 app 代码开始开发到第一个其全新 pad 版本的发布,我...

6006
来自专栏分享达人秀

Activity初入门,创建和配置如此简单

Activity是Android应用的重要组成单元之一,也是Android应用最常见的组件之一。前面看到的示例通常都只包含一个Activity或一个Ap...

2105
来自专栏分享达人秀

Fragment回退栈及弹出方法

在上一期分享的文章末尾留了一个课后作业,有去思考如何解决吗?如果已经会了那么恭喜你,如果还不会也没关系,本期一起来学习。 一、回退栈 在前面两...

2926

扫码关注云+社区

领取腾讯云代金券