当前位置:   article > 正文

Android 实现底部导航切换的几种方式_android 底部无文字导航切换

android 底部无文字导航切换

https://www.jianshu.com/p/292951563f5a?tdsourcetag=s_pcqq_aiomsg

 

1. BottomBar + fragment

GitHub地址:https://github.com/roughike/BottomBar
简书:http://www.jianshu.com/p/c94584b72635

2. LinearLayout + TextView

以下为本人在项目中的实现效果 因为涉及到中间的动画 因此只能只能用笨一点的方法实现了

 

 

111.png

 

  1. /*
  2. * 功能键点击事件
  3. */
  4. @Override
  5. public void onClick(View view) {
  6. switch (view.getId()) {
  7. //切换首页
  8. case R.id.btn_main:
  9. if (c1) {
  10. initBoolean();
  11. tv_main_main.setTextColor(getResources().getColor(R.color.themeColor));
  12. img_main.setImageResource(R.mipmap.shouye_click_icon);
  13. ChangeFragmentUtil.changeFragment(MainActivity.this, R.id.main_fragment, new MainFragment());
  14. c1 = false;
  15. }
  16. break;
  17. //切换直播
  18. case R.id.btn_SopCast:
  19. if (c2) {
  20. initBoolean();
  21. tv_main_bbs.setTextColor(getResources().getColor(R.color.themeColor));
  22. img_sop.setImageResource(R.mipmap.zhibo_click_icon);
  23. ChangeFragmentUtil.changeFragment(MainActivity.this, R.id.main_fragment, new SopCastFragment());
  24. c2 = false;
  25. }
  26. break;
  27. //发起众筹或者直播
  28. case R.id.btn_collect:
  29. initBoolean();
  30. tv_main_sellector.setTextColor(getResources().getColor(R.color.themeColor));
  31. operatingAnim = AnimationUtils.loadAnimation(this, R.anim.tip);
  32. LinearInterpolator lin = new LinearInterpolator();
  33. operatingAnim.setInterpolator(lin);
  34. img_collect.startAnimation(operatingAnim);
  35. popupWindow.showUp(ll_main_bottom);
  36. break;
  37. //切换社区
  38. case R.id.btn_bbs:
  39. if (c4) {
  40. initBoolean();
  41. tv_main_shequ.setTextColor(getResources().getColor(R.color.themeColor));
  42. img_bbs.setImageResource(R.mipmap.shequ_click_icon);
  43. ChangeFragmentUtil.changeFragment(MainActivity.this, R.id.main_fragment, new BBSFragment());
  44. c4 = false;
  45. }
  46. break;
  47. //切换个人中心
  48. case R.id.btn_mine:
  49. if (c5) {
  50. initBoolean();
  51. tv_main_mine.setTextColor(getResources().getColor(R.color.themeColor));
  52. img_mine.setImageResource(R.mipmap.wode_click_icon);
  53. ChangeFragmentUtil.changeFragment(MainActivity.this, R.id.main_fragment, new MineFragment());
  54. c5 = false;
  55. }
  56. break;
  57. default:
  58. break;
  59. }
  60. }
  61. /*
  62. * 初始化功能键标记位
  63. */
  64. private void initBoolean() {
  65. c1 = true;
  66. c2 = true;
  67. c3 = true;
  68. c4 = true;
  69. c5 = true;
  70. img_main.setImageResource(R.mipmap.shouye_icon);
  71. img_mine.setImageResource(R.mipmap.wode_icon);
  72. img_sop.setImageResource(R.mipmap.zhibo_icon);
  73. img_bbs.setImageResource(R.mipmap.shequ_icon);
  74. //初始化字体颜色
  75. tv_main_mine.setTextColor(getResources().getColor(R.color.green1));
  76. tv_main_bbs.setTextColor(getResources().getColor(R.color.green1));
  77. tv_main_sellector.setTextColor(getResources().getColor(R.color.green1));
  78. tv_main_shequ.setTextColor(getResources().getColor(R.color.green1));
  79. tv_main_main.setTextColor(getResources().getColor(R.color.green1));
  80. }

3. RadioGroup + RadioButton

这种方法实现起来相对比较简单 ,但是有局限性,

 

  1. <RadioGroup
  2. android:layout_width="match_parent"
  3. android:layout_height="wrap_content"
  4. android:id="@+id/rg_content_bottom"
  5. android:background="@drawable/bottom_tab_bg"
  6. android:orientation="horizontal" >
  7. <RadioButton
  8. android:id="@+id/rb_content_home"
  9. style="@style/bottomStyle"
  10. android:drawableTop="@drawable/bottom_radio_home_selector"
  11. android:text="首页" />
  12. <RadioButton
  13. android:id="@+id/rb_content_newscenter"
  14. style="@style/bottomStyle"
  15. android:drawableTop="@drawable/bottom_radio_newscenter_selector"
  16. android:text="新闻中心" />
  17. <RadioButton
  18. android:id="@+id/rb_content_smartservice"
  19. style="@style/bottomStyle"
  20. android:drawableTop="@drawable/bottom_radio_smartservice_selector"
  21. android:text="智慧服务" />
  22. <RadioButton
  23. android:id="@+id/rb_content_govaffairs"
  24. style="@style/bottomStyle"
  25. android:drawableTop="@drawable/bottom_radio_govaffairs_selector"
  26. android:text="政务" />
  27. <RadioButton
  28. android:id="@+id/rb_content_setting"
  29. style="@style/bottomStyle"
  30. android:drawableTop="@drawable/bottom_radio_setting_selector"
  31. android:text="设置" />
  32. </RadioGroup>

 

  1. // 监听底部的单选按钮,当选择一个按钮时,把ViewPager切换到相应的位置
  2. rg_content_bottom.setOnCheckedChangeListener(new MyOnCheckedChangeListener());
  3. class MyOnCheckedChangeListener implements OnCheckedChangeListener{
  4. @Override
  5. public void onCheckedChanged(RadioGroup group, int checkedId) {
  6. // 当选择一个按钮时,把ViewPager切换到相应的位置
  7. switch (checkedId) {
  8. case R.id.rb_content_home:
  9. vp_content_pagers.setCurrentItem(0,false);// 参数2 代表是否带滑动效果
  10. enableSlidingMenu(false);
  11. break;
  12. case R.id.rb_content_newscenter:
  13. vp_content_pagers.setCurrentItem(1,false);
  14. enableSlidingMenu(true);
  15. break;
  16. case R.id.rb_content_smartservice:
  17. vp_content_pagers.setCurrentItem(2,false);
  18. enableSlidingMenu(true);
  19. break;
  20. case R.id.rb_content_govaffairs:
  21. vp_content_pagers.setCurrentItem(3,false);
  22. enableSlidingMenu(true);
  23. break;
  24. case R.id.rb_content_setting:
  25. vp_content_pagers.setCurrentItem(4,false);
  26. enableSlidingMenu(false);
  27. break;
  28. default:
  29. break;
  30. }
  31. }
  32. }

4. BottomNavigationBar

详细地址:http://blog.csdn.net/u010046908/article/details/50962081

5. FragmentTableHost+fragment

详细地址:http://blog.csdn.net/bo543937071/article/details/53422947

6. FragmentTabhostUtils

一个封装好的底部导航实现
GitHub地址:https://github.com/open-android/FragmentTabhostUtils
简书地址:http://www.jianshu.com/p/dd5cbc6544a9



作者:我是你森哥哥
链接:https://www.jianshu.com/p/292951563f5a
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/342922
推荐阅读
相关标签
  

闽ICP备14008679号