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. genkins的报错排查

    [ERROR] /root/.jenkins/workspace/car/src/main/java/com/zhengxin/tool/code/Code.java:[20,64] diamond ...

  2. shell map使用

    # 定义初始化map declare -A map=([") # 输出所有key echo ${map[@]} # 输出key对应的值 "]} # 遍历map for key in ...

  3. vue项目element-ui框架中的弹窗中的表单验证清除问题

    问题回顾: 1.vue项目的在弹窗上的form表单验证,第一次点击新增时正常,第二次新增打开弹窗后由于表单内容为空,出现验证这种情况 2.为了解决上面的情况,在执行点击新增事件加上this.$refs ...

  4. Python学习 day13

    一.可迭代对象和迭代器 1.回顾可以被for循环的对象 list.dic.str.set.tuple.文件句柄f.range().enumerate() 只有可迭代对象才能被for循环,当我们遇到一个 ...

  5. @Transcational特性

    捕获RuntimeException 捕获Error 并不捕获Checked Exception 在方法中使用@Transcational注解时候,通过throw new Exception(),在发 ...

  6. Unity5 2D Animation

    1. 所有的动画保存在 .anim 后缀的文件里.2. Animation 标签用来编辑一堆 Animation clip,每一个clip是一个图片序列,也就是动图.动画的最小控制单位就是clip,一 ...

  7. IDEA里运行代码时出现Caused by: java.lang.ClassNotFoundException: org.apache.log4j.Logger的解决办法(图文详解)

    不多说,直接上干货! 问题详情 运行出现log4j的问题 -classpath "C:\Program Files\Java\jdk1.8.0_66\jre\lib\charsets.jar ...

  8. Cloudera Manager安装之时间服务器和时间客户端(Ubuntu14.04)(二)

    第二步: Cloudera Manager安装之时间服务器和时间客户端(二) 找一台机器作为时间服务器 我这里,放到ubuntucmbigdata1这台机器! 注意,之前是已经做了集群时间同步了. 在 ...

  9. addEventListener()和removeEventListener()

    作用: addEventListener()与removeEventListener()用于处理指定和删除事件处理程序操作. 它们都接受3个参数:事件名.事件处理的函数和布尔值. 布尔值参数是true ...

  10. 一分钟认识:Cucumber框架

    一分钟认识:Cucumber框架(一) 转自:https://www.cnblogs.com/dami520/p/3168864.html 个人感觉这个框架非常适合UI自动化测试,他不仅能把用例中的测 ...