Android应用开发Android首页底部导航栏实现方式
白羽 2018-11-07 来源 :网络 阅读 1867 评论 0

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

    本文将带你了解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<!--xml version="1.0" encoding="utf-8"-->

     
<3>activity中引入我们的bottom_view.xml,代码如下:
<!-- app:itemBackground="@color/white"被删除后水波纹就出来了,原因呢?-->         <view android:background="@drawable/bottom_shadow" android:layout_above="@id/bottom_navigation" android:layout_height="5dp" android:layout_width="match_parent"></view></android.support.design.widget.bottomnavigationview></android.support.v4.view.viewpager>
<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 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved