BottomBar之Android底部菜单

前言:开源项目BottomBar,实现Android底部菜单(常用菜单,BottomBar实现动画(上下式)+消息菜单,BottomBar+ViewPager+Fragment实现炫酷的底部导航效果)

效果:

开发环境:AndroidStudio2.2.1+gradle-2.14.1

引入依赖:

  compile 'com.android.support:appcompat-v7:23.0.0'
compile 'com.android.support:design:23.+'
compile 'com.roughike:bottom-bar:1.3.+'

部分代码:

public class Menu1Activity extends AppCompatActivity {

    private BottomBar mBottomBar;
private MainFragment mMainFragment;
private TwoFragment twoFragment;
private ThreeFragment threeFragment;
private FourFragment fourFragment;
private FragmentTransaction transaction;
private BottomBarBadge unreadMessages; @Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_menu);
mBottomBar = BottomBar.attach(this, savedInstanceState);
// 千万注意:这个方法要用在 setItemsFromMenu 之前,也就是tab还没有设置之前要先调用,不然会报错。
mBottomBar.noTabletGoodness(); //添加初始Fragment
defaultFragment(null == mMainFragment ? mMainFragment = MainFragment.newInstance() : mMainFragment);
mBottomBar.setItems(R.menu.bottombar_menu);
mBottomBar.setOnMenuTabClickListener(new OnMenuTabClickListener() {
@Override
public void onMenuTabSelected(@IdRes int menuItemId) {
//单击事件 menuItemId 是 R.menu.bottombar_menu 中 item 的 id
switch (menuItemId) {
case R.id.bb_menu_main:
if (null == mMainFragment) {
mMainFragment = MainFragment.newInstance();
}
replaceFragment(mMainFragment);
break;
case R.id.bb_menu_chart:
if (null == twoFragment) {
twoFragment = TwoFragment.newInstance();
}
replaceFragment(twoFragment);
unreadMessages.setVisibility(View.GONE);
break;
case R.id.bb_menu_timeline:
if (null == threeFragment) {
threeFragment = ThreeFragment.newInstance();
}
replaceFragment(threeFragment);
break;
case R.id.bb_menu_about:
if (null == fourFragment) {
fourFragment = FourFragment.newInstance();
}
replaceFragment(fourFragment);
break;
default:
break;
}
} @Override
public void onMenuTabReSelected(@IdRes int menuItemId) {
//重选事件,当前已经选择了这个,又点了这个tab。微博点击首页刷新页面
}
});
// 当点击不同按钮的时候,设置不同的颜色
// 可以用以下三种方式来设置颜色.
mBottomBar.mapColorForTab(0, ContextCompat.getColor(this, R.color.colorPrimary));
mBottomBar.mapColorForTab(1, ContextCompat.getColor(this, R.color.colorAccent));
mBottomBar.mapColorForTab(2, ContextCompat.getColor(this, R.color.green));
mBottomBar.mapColorForTab(3, ContextCompat.getColor(this, R.color.orange));
setMsg();
} @Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
//保存BottomBar的状态
mBottomBar.onSaveInstanceState(outState);
} private void replaceFragment(Fragment fragment) {
FragmentManager fm = getSupportFragmentManager();
transaction = fm.beginTransaction();
transaction.replace(R.id.main_fragment_layout, fragment);
// transaction.hide();
transaction.commit(); } private void defaultFragment(Fragment fragment) {
FragmentManager fm = getSupportFragmentManager();
transaction = fm.beginTransaction();
transaction.add(R.id.main_fragment_layout, fragment);
transaction.commit();
} private void setMsg() {
// 为tab设置一个标签,“信息”提示的数字
// 参数分别是:第几个tab;小圆圈的颜色;显示的数字
unreadMessages = mBottomBar.makeBadgeForTabAt(1, "#FF0000", 13); // 设置显示或隐藏
unreadMessages.show();
// unreadMessages.hide();
// 设置显示的数字
unreadMessages.setCount(4); // 设置显示/消失动画的延迟时间
unreadMessages.setAnimationDuration(200); // 如果不点它,它一直显示
unreadMessages.setAutoShowAfterUnSelection(true);
}

源码下载...

BottomBar之Android底部菜单的更多相关文章

  1. Android底部菜单的实现

    前言:以前制作菜单使用TabHost,但是android 3.0以上就被废弃了,google已经不建议使这个类了.ActionBar也是菜单,不过在头部,算是导航了 ===本文就介绍怎么制作底部菜单= ...

  2. Android 底部菜单会被顶起来的情况

    描述:主界面有一排底部菜单,当从主界面跳转到另一个界面,假如说这个界面有软键盘弹出,主界面的顶部菜单会被顶起来. 原因:系统软键盘造成的 解决办法:在返回主界面时将系统软键盘关掉即可

  3. Android 底部菜单固定到底部

    今天搞了很久的一个问题,导航菜单没有固定到底部,因为上面是ListView,可是没内容,于是就浮动上去了. 效果如下: 这里采用的是一个碎片,代码是: <LinearLayout xmlns:a ...

  4. Android应用主界面底部菜单实现

    介绍 现在绝大多数主流的应用主界面,都会包含一个底部菜单,就拿腾讯的QQ与微信来说,看起来是这样的  <---我是底部菜单 原理 在很久以前,可以通过TabActivity实现相关功能,自从Fr ...

  5. Android自定义控件系列(四)—底部菜单(下)

    转载请注明出处:http://www.cnblogs.com/landptf/p/6290862.html 在app中经常会用到底部菜单的控件,每次都需要写好多代码,今天我们用到了前几篇博客里的控件来 ...

  6. Android中软键盘弹出时底部菜单上移问题

    当在Android的layout设计里面如果输入框过多,则在输入弹出软键盘的时候,下面的输入框会有一部分被软件盘挡住,从而不能获取焦点输入. 解决办法: 方法一:在你的activity中的oncrea ...

  7. [Android] Android 使用 FragmentTabHost + Fragment 实现 微信 底部菜单

    Android 使用 FragmentTabHost + Fragment 实现 微信 底部菜单 利用FragmentTabHost实现底部菜单,在该底部菜单中,包括了4个TabSpec,每个TabS ...

  8. Xamarin.Android 利用Fragment实现底部菜单

    效果图: 第一步:添加引用 引用 Crosslight.Xamarin.Android.Support.v7.AppCompat 这个包. 第二步:绘制Main和Fragment界面 fg_home. ...

  9. Android自己定义TabActivity(实现仿新浪微博底部菜单更新UI)

    现在Android上非常多应用都採用底部菜单控制更新的UI这样的框架,比如新浪微博 点击底部菜单的选项能够更新界面.底部菜单能够使用TabHost来实现,只是用过TabHost的人都知道自己定义Tab ...

随机推荐

  1. 感想篇:7)知其然与知其所以然,KnowHow与KnowWhy

    本章目的:探究--知其然与知其所以然,KnowHow与KnowWhy. 1.Know-How体系与代价: 100多年的汽车研发历史表明,企业只有开发过两代车以上才能逐步建立和完善Know-How体系. ...

  2. springboot(九)-log配置

    spring项目放到tomcat中运行,我们可以在tomcat的logs文件夹下面生成log文件.那么我们的springboot项目没有放到系统安装的tomcat容器中,怎么设置生成log文件呢? 有 ...

  3. sublime 运行 python

    sublime 中 选择菜单 Tools--> Build System-->New Build System,编辑文件如下: /usr/local/Cellar/python/3.7.0 ...

  4. centsos 查看系统版本信息

    [root@hostuser gitlab]# lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cx ...

  5. 漫谈TCPIP协议原理

    一.每次说道TCPIP协议,有能说会道者,总爱说三次握手,什么意思? 顾名思义,假设有两个机器A和B 1.当A发送给B一个包的时候,B接收到了,这个时候,B有两个选择,要么将包数据放入缓存,等待处理, ...

  6. Ubuntu18.04安装thunderbird并设置中文

    Ubuntu18.04安装thunderbird并设置中文 安装thunderbird sudo apt-get install thunderbird 安装中文包 sudo apt-get inst ...

  7. 溶解shader

    玩神界原罪2,感觉人物被建筑遮挡时,建筑的“溶解”效果很有意思,想实现一下.然后发现连溶解都没实现过,emmmmm....先来把溶解实现了~ 原理就是根据一张噪声图的值是否大于某个阈值,来判断是否丢弃 ...

  8. css3画半圆

    border-radius制作半圆与制作圆形的方法是一样的,只是元素的宽度与圆角方位要配合一致,不同的宽度和高度比例,以及圆角方位,可以制作上半圆.下半圆.左半圆和右半圆效果.例如:.semicirc ...

  9. DateTime.Now与DateTime.Today的区别

    区别如下图: DateTime.Now: 不仅显示日期 还显示当前时间: DateTime.Today: 只显示当前日期,没有时间

  10. 九度oj 1001 A+B for Matrices 2011年浙江大学计算机及软件工程研究生机试真题

    题目1001:A+B for Matrices 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:15235 解决:6172 题目描述: This time, you are supposed ...