本文将带你了解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频道!