在android Studio中设计app的底部导航栏

准备工作

新建一个空白android项目
命名为csdn
在android Studio中设计app的底部导航栏_第1张图片

在res/layout路径下设置主页面
使用线性布局 linearLayout

使用自定义的viewPager(切换多个页面会秒跳转,提升体验感觉)
在android Studio中设计app的底部导航栏_第2张图片

底部导航控件
在android Studio中设计app的底部导航栏_第3张图片

如下所示 主页布局
在android Studio中设计app的底部导航栏_第4张图片

在资源文件中 res/color (没有color文件夹就自己建,导航栏切换时改变选中栏颜色)
新建颜色选择文件
bg_tab.xml
在android Studio中设计app的底部导航栏_第5张图片

新增颜色配置文件 备用
在android Studio中设计app的底部导航栏_第6张图片
将使用到的静态文件拷贝到项目中
三个图片拷贝到 res/drawable下

在android Studio中设计app的底部导航栏_第7张图片

开始设计菜单布局

在资源文件中 res/
新建菜单文件
menu/navigetion.xml
在android Studio中设计app的底部导航栏_第8张图片

新建fragment页面

在源码中新建三个空白的fragment页面,用于给导航栏绑定备用
wechatFragment
listFragment
discoverFragment

在android Studio中设计app的底部导航栏_第9张图片

通过如上方式新建三个fragment如下所示,删除其他不用的方法
只保留图中onCreateView方法跟wechatFragment
另外两个fragment如法炮制。
在android Studio中设计app的底部导航栏_第10张图片

新建fragment时, res/layout路径下会自动生成相应的fragment.xml页面布局文件
在android Studio中设计app的底部导航栏_第11张图片
如上图简单设置一下页面信息

设置主页面的逻辑(划重点)

进入主页面的
MainActivity
这里贴一下代码,上面的大家就自己敲一遍,别老想着偷懒哦

package com.example.csdn;

import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentPagerAdapter;
import androidx.viewpager.widget.ViewPager;

import android.os.Bundle;
import android.view.MenuItem;
import com.example.csdn.fragment.discoverFragment;
import com.example.csdn.fragment.listFragment;
import com.example.csdn.fragment.wechatFragment;
import com.google.android.material.bottomnavigation.BottomNavigationView;

public class MainActivity extends AppCompatActivity   implements BottomNavigationView.OnNavigationItemSelectedListener, ViewPager.OnPageChangeListener {
    ViewPager viewPager;
    BottomNavigationView mNavigationView;
     wechatFragment  wechatFragments = new wechatFragment();
     listFragment  listFragments = new listFragment();
     discoverFragment discoverFragments =new discoverFragment();
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //页面初始化导航栏
        init();
    }

    private void init() {
          
          //获取页面标签对象
        viewPager = findViewById(R.id.viewPager);
        viewPager.addOnPageChangeListener(this);
        mNavigationView = findViewById(R.id.navigation);
        mNavigationView.setOnNavigationItemSelectedListener(this);


        //页面切换
        viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
            @NonNull
            @Override
            public Fragment getItem(int position) {
                switch (position){
                    case 0:
                        return  wechatFragments;
                    case 1:
                        return  listFragments;
                    case 2:
                        return  discoverFragments;
                }

                return null;
            }

            @Override
            public int getCount() {
                return 3;
            }
        });
    }

    //实现接口的相关方法  implements上面两个方法后 alt+enter就会弹出这些接口,直接回车实现他们
    @Override
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

    }

    @Override
    public void onPageSelected(int position) {
        mNavigationView.getMenu().getItem(position).setChecked(true);
    }

    @Override
    public void onPageScrollStateChanged(int state) {

    }

    @Override
    public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
        viewPager.setCurrentItem(menuItem.getOrder());
        return true;
    }
}

最后打开模拟器看一下效果
在android Studio中设计app的底部导航栏_第12张图片

在android Studio中设计app的底部导航栏_第13张图片

在android Studio中设计app的底部导航栏_第14张图片

你可能感兴趣的:(android,安卓,android,studio)