Skip to content

About

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

Resources

Stars

9 stars

Watchers

1 watching

Forks

Latest commit

 

History

5 Commits

Folders and files

Repository files navigation

UpDownAnimationMenu


前言:开源项目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);
}</pre><br>

About

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

Resources

Stars

9 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages