白羽
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
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号