Android自定义底部导航栏,Android应用开发Android首页底部导航栏实现方式

本文详细介绍了在Android应用开发中实现底部导航栏的三种方法,包括使用BottomNavigationView,并提供了相关代码示例。文章还讨论了如何处理底部导航栏的动画效果和与ViewPager的联动。
摘要由CSDN通过智能技术生成

本文将带你了解Android应用开发Android首页底部导航栏实现方式,希望本文对大家学Android有所帮助。

Android底部导航栏的实现方式这里主要总结了3种,代码尽量追求精简,可以直接拷贝使用,便于大家比较选择。

1.BottomNavigationView实现底部导航栏

<1>首先在gradle文件中添加依赖,implementation'com.android.support:design:26.1.0',注意该依赖的版本不要高于compileSDKVersion,否则会报错。

<2>在res目录下新建menu文件夹,创建bottom_view.xml,也就是我们底部tab的样式,代码如下:

?1

<3>activity中引入我们的bottom_view.xml,代码如下:

<4>activity中的代码处理如下:

public class BottomNavigationViewActivity extends AppCompatActivity {    private Button button;    private MenuItem lastItem; // 上一个选中的item    private ViewPager viewPager;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();    }    public void initView(){        viewPager=findViewById(R.id.viewpager);        final BottomNavigationView view=(BottomNavigationView)findViewById(R.id.bottom_navigation);        //默认 >3 的选中效果会影响ViewPager的滑动切换时的效果,故利用反射去掉     //   BottomNavigationViewHelper.disableShiftMode(view);        //拿到默认选中的item        lastItem=view.getMenu().getItem(0);        //点击选择item        view.setOnNavigationItemSelectedListener(new BottomNavigationView.OnNavigationItemSelectedListener() {            @Override            public boolean onNavigationItemSelected(@NonNull MenuItem item) {                switch (item.getItemId()) {                    case R.id.item_news:                        viewPager.setCurrentItem(0);                        break;                    case R.id.item_lib:                        viewPager.setCurrentItem(1);                        break;                    case R.id.item_find:                        viewPager.setCurrentItem(2);                        break;                    case R.id.item_more:                        viewPager.setCurrentItem(3);                        break;                }                return false;            }        });        viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {            @Override            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {            }            @Override            public void onPageSelected(int position) {                if (lastItem != null) {                    lastItem.setChecked(false);                } else {                   view.getMenu().getItem(0).setChecked(false);                }                lastItem= view.getMenu().getItem(position);                lastItem.setChecked(true);            }            @Override            public void onPageScrollStateChanged(int state) {            }        });        setupViewPager(viewPager);    }    private void setupViewPager(ViewPager viewPager) {        ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());         adapter.addFragment(new HomeFragment());        adapter.addFragment(new GiftFragment());        adapter.addFragment(new PersonFragment());        adapter.addFragment(new SettingFragment());        viewPager.setAdapter(adapter);    }}

我们可以看一下实现的效果图:

截止到上面的代码,需要说明一下几点:

1.当menu文件夹下的bottom_view中的item数<=3时,item的展示是没有问题的,但是当item数>=4时,就会出现上图的动画效果,比较丑陋,那么如何去规避这个动画效果呢?只需要将我们上面代码中的这行代码取消注释,使其生效即可。

?1BottomNavigationViewHelper.disableShiftMode(view);

2.在activity_main的布局文件中,我们给高度为5dp的View文件添加了水波纹的背景,但是为什么在点击item的时候,水波纹会出现呢?虽然这是我想要的结果。

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标移动开发之Android频道!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值