底部导航栏BottomNavigationBar

926 阅读1分钟

底部导航栏之:BottomNavigationBar

源码地址:https://github.com/gqgithub/MyDesign

图示:

1.添加依赖

compile 'com.ashokvarma.android:bottom-navigation-bar:1.4.1'

2.xml

  <?xml version="1.0" encoding="utf-8"?>
  <LinearLayout
      xmlns:android="http://schemas.android.com/apk/res/android"
      android:layout_width="match_parent"
      android:layout_height="match_parent"
      android:orientation="vertical">

      <FrameLayout
          android:id="@+id/layFrame"
          android:layout_width="match_parent"
          android:layout_height="0dp"
          android:layout_weight="1"/>

      <com.ashokvarma.bottomnavigation.BottomNavigationBar
          android:id="@+id/bottom_navigation_bar"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:layout_gravity="bottom"/>
  </LinearLayout>

3.Activity

/**
 * 底部导航栏之--BottomNavigationBar
 * author:gangqiang
 */
public class BottomNavigationBarActivity extends AppCompatActivity implements BottomNavigationBar
        .OnTabSelectedListener {

    private HomeFragment mHomeFragment;
    private LikeFragment mLikeFragment;
    private LocationFragment mLocationFragment;
    private PersonFragment mPersonFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_bottom);

        initBottomNavigationBar();

    }

    private void initBottomNavigationBar() {
        BottomNavigationBar bottomNavigationBar = (BottomNavigationBar) findViewById(R.id
                .bottom_navigation_bar);
        //1.设置导航栏模式:setMode()Values:MODE_FIXED(没有水波纹效果), MODE_SHIFTING(有水波纹)
        bottomNavigationBar.setMode(BottomNavigationBar.MODE_FIXED);
        //2.设置导航栏背景模式:setBackgroundStyle()BACKGROUND_STYLE_STATIC, BACKGROUND_STYLE_RIPPLE
        bottomNavigationBar.setBackgroundStyle(
                BottomNavigationBar.BACKGROUND_STYLE_RIPPLE);
        //3.设置BottomNavigationItem颜色  setActiveColor, setInActiveColor, setBarBackgroundColor Value: Color value or resource
        bottomNavigationBar
                .setBarBackgroundColor(R.color.white)//选中时字体颜色和图片颜色
                .setInActiveColor(R.color.white)//没选中时字体颜色和图片颜色
                .setActiveColor(R.color.hui);//bar的背景颜色


        bottomNavigationBar
                .addItem(new BottomNavigationItem(R.drawable.home, "home"))
                .addItem(new BottomNavigationItem(R.drawable.location, "location"))
                .addItem(new BottomNavigationItem(R.drawable.like, "like"))
                .addItem(new BottomNavigationItem(R.drawable.person, "person"))
                .setFirstSelectedPosition(0)
                .initialise();
        //设置改变监听
        bottomNavigationBar.setTabSelectedListener(this);

        //设置默认fragment
        setDefaultFragment();

    }

    /** * 设置默认的 */
    private void setDefaultFragment() {
        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction transaction = fm.beginTransaction();
        transaction.replace(R.id.layFrame, new HomeFragment());
        transaction.commit();
    }


    @Override
    public void onTabSelected(int position) {
        FragmentTransaction beginTransaction = getSupportFragmentManager().beginTransaction();
        switch (position) {
            case 0:
                if (mHomeFragment == null) {
                    mHomeFragment = HomeFragment.newInstance("home");
                }
                beginTransaction.replace(R.id.layFrame, mHomeFragment);
                break;
            case 1:
                if (mLocationFragment == null) {
                    mLocationFragment = LocationFragment.newInstance("location");
                }
                beginTransaction.replace(R.id.layFrame, mLocationFragment);
                break;
            case 2:
                if (mLikeFragment == null) {
                    mLikeFragment = LikeFragment.newInstance("like");
                }
                beginTransaction.replace(R.id.layFrame, mLikeFragment);
                break;
            case 3:
                if (mPersonFragment == null) {
                    mPersonFragment = PersonFragment.newInstance("person");
                }
                beginTransaction.replace(R.id.layFrame, mPersonFragment);
        }
        beginTransaction.commit();

    }

    @Override
    public void onTabUnselected(int position) {

    }


    @Override
    public void onTabReselected(int position) {

    }


}