底部导航BottomNavigationBar的基本使用(谷歌推荐)

效果如下图:

1.导入相关依赖

GitHub:GitHub:https://github.com/Ashok-Varma/BottomNavigation

    添加依赖:    implementation 'com.ashokvarma.android:bottom-navigation-bar:2.1.0'

2.布局文件添加布局

        

3.Java代码中添加属性配置

public class MainActivity extends AppCompatActivity implements BottomNavigationBar.OnTabSelectedListener {    private BottomNavigationBar mBottomNavigationBar;        @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        mBottomNavigationBar = findViewById(R.id.bottom_navigation_bar);        initializeBottomNavigationBar();        //添加监听  实现BottomNavigationBar.OnTabSelectedListener接口        //public void onTabSelected(int position) 未选中 -> 选中        //public void onTabUnselected(int position) 选中 -> 未选中        //public void onTabReselected(int position) 选中 -> 选中        mBottomNavigationBar.setTabSelectedListener(this);    }     private void initializeBottomNavigationBar() {        // TODO 设置模式        mBottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED);        // TODO 设置背景色样式        mBottomNavigationBar.setBackgroundStyle(BottomNavigationBar.BACKGROUND_STYLE_STATIC);        mBottomNavigationBar.setBarBackgroundColor(R.color.tabBGColor);        mBottomNavigationBar                .addItem(new BottomNavigationItem(R.drawable.tab_home_active, "首页").setActiveColorResource(R.color.tabActive)                        .setInactiveIconResource(R.drawable.tab_home).setInActiveColorResource(R.color.tabInActive))                .addItem(new BottomNavigationItem(R.drawable.tab_video_active, "电影").setActiveColorResource(R.color.tabActive)                        .setInactiveIconResource(R.drawable.tab_video).setInActiveColorResource(R.color.tabInActive))                .addItem(new BottomNavigationItem(R.drawable.tab_mine_active, "我的").setActiveColorResource(R.color.tabActive)                        .setInactiveIconResource(R.drawable.tab_mine).setInActiveColorResource(R.color.tabInActive))                .setFirstSelectedPosition(lastSelectedPosition)                .initialise();    }    @Override    public void onTabSelected(int position) {    }    @Override    public void onTabUnselected(int position) {    }    @Override    public void onTabReselected(int position) {    }}

三种模式:

  • MODE_DEFAULT
    如果Item的个数<=3就会使用MODE_FIXED模式,否则使用MODE_SHIFTING模式

  • MODE_FIXED (固定大小)
    填充模式,未选中的Item会显示文字,没有换挡动画。
    宽度=总宽度/action个数
    最大宽度: 168dp
    最小宽度: 80dp
    Padding:6dp(8dp)、10dp、12dp
    字体大小:12sp、14sp

  • MODE_SHIFTING (不固定大小)
    换挡模式,未选中的Item不会显示文字,选中的会显示文字。在切换的时候会有一个像换挡的动画

三种Style:

  • BACKGROUND_STYLE_DEFAULT
    如果设置的Mode为MODE_FIXED,将使用BACKGROUND_STYLE_STATIC 。如果Mode为MODE_SHIFTING将使用BACKGROUND_STYLE_RIPPLE。

  • BACKGROUND_STYLE_STATIC
    点击的时候没有水波纹效果
    航条的背景色是白色,加上setBarBackgroundColor()可以设置成你所需要的任何背景颜色

  • BACKGROUND_STYLE_RIPPLE
    点击的时候有水波纹效果
    导航条的背景色是你设置的处于选中状态的 Item的颜色(ActiveColor),也就是setActiveColorResource这个设置的颜色

4.设置Badges,一般用于消息提醒

 mTextBadgeItem = new TextBadgeItem()                .setBorderWidth(4)                .setBackgroundColorResource(R.color.main_color)                .setText("5")                .setTextColorResource(R.color.white)                .setBorderColorResource(R.color.colorPrimaryDark)  //外边界颜色                .setHideOnSelect(false);        mShapeBadgeItem = new ShapeBadgeItem()                .setShape(ShapeBadgeItem.SHAPE_OVAL)                .setShapeColor(R.color.main_color)                .setShapeColorResource(R.color.main_color)                .setSizeInDp(this,10,10)                .setEdgeMarginInDp(this,2)//                .setSizeInPixels(30,30)//                .setEdgeMarginInPixels(-1)                .setGravity(Gravity.TOP | Gravity.END)                .setHideOnSelect(false);

5.手动显示与隐藏

bottomNavigationBar.hide();//隐藏bottomNavigationBar.hide(true);//隐藏是否启动动画,这里并不能自定义动画bottomNavigationBar.unHide();//显示bottomNavigationBar.hide(true);//隐藏是否启动动画,这里并不能自定义动画

6.Demo

https://github.com/PurcellHH/BottomNavigationBar

更多相关文章

  1. No.11 使用firewall配置的防火墙策略的生效模式
  2. 自定义Activity漂亮跳转效果
  3. Android(安卓)动画效果 --Animation 动画专题研究
  4. Android(安卓)四大组件之Activity(Activity/Fragment)
  5. Android实现带动画效果的可点击展开TextView
  6. 【Android】 adb shell 下 setting 指令
  7. 短视频源码安卓中的普通动画和属性动画的基本操作
  8. Android中补间动画、属性动画效果演示
  9. RecyclerView源码分析一之简单介绍

随机推荐

  1. 一些记号贴(不完整仅入入门)
  2. android 控件颜色随焦点变化实例
  3. 使用maven构建基于spring、springMVC的简
  4. Android(安卓)LayoutAnimation使用及扩展
  5. Android学习之图片异步加载框架Picasso
  6. Android(安卓)发布开源项目到jcenter
  7. android 单元测试 附源码
  8. 书籍推荐下载
  9. 完美解决Android Studio在写XML布局的时
  10. [Android]Android(安卓)Sqlite3 常用命令