Android 底部菜单栏(RadioGroup+Fragment)美化

    众所周知,android的底部菜单栏太重要,平时项目一般都是需要用到的,但是网上关于这方面的demo做得太丑了,实在惨不忍睹,所以这里便用RadioGroup+Fragment的方式写了一个,顺便美化了一下,需要的可以看下。

效果图:

Android 底部菜单栏(RadioGroup+Fragment)美化_第1张图片


项目结构

Android 底部菜单栏(RadioGroup+Fragment)美化_第2张图片

MainActivity.java

public class MainActivity extends AppCompatActivity {

    private FrameLayout frameLayout;
    private RadioGroup radioGroup;
    private Fragment[] mFragments;
    private int mIndex;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initFragment();
        setRadioGroupListener();


    }

    private void initFragment() {
        radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
        frameLayout = (FrameLayout) findViewById(R.id.fl_content);
        HomeFragment homeFragment = new HomeFragment();
        ShopFragment shopFragment = new ShopFragment();
        LiveFragment liveFragment = new LiveFragment();
        ShoppingCarFragment shoppingCarFragment = new ShoppingCarFragment();
        MineFragment mineFragment = new MineFragment();
        //添加到数组
        mFragments = new Fragment[]{homeFragment, shopFragment, liveFragment, shoppingCarFragment, mineFragment};
        //开启事务
        FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
        //添加首页
        ft.add(R.id.fl_content, homeFragment).commit();
        //默认设置为第0个
        setIndexSelected(0);
    }

    private void setIndexSelected(int index) {
        if (mIndex == index) {
            return;
        }
        FragmentManager fragmentManager = getSupportFragmentManager();
        FragmentTransaction ft = fragmentManager.beginTransaction();
        //隐藏
        ft.hide(mFragments[mIndex]);
        //判断是否添加
        if (!mFragments[index].isAdded()) {
            ft.add(R.id.fl_content, mFragments[index]).show(mFragments[index]);
        } else {
            ft.show(mFragments[index]);
        }
        ft.commit();
        //再次赋值
        mIndex = index;

    }

    private void setRadioGroupListener() {
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup radioGroup, int i) {
                switch (i) {
                    case R.id.rb_home:
                        setIndexSelected(0);
                        break;
                    case R.id.rb_shop:
                        setIndexSelected(1);
                        break;
                    case R.id.rb_live:
                        setIndexSelected(2);
                        break;
                    case R.id.rb_shopping_car:
                        setIndexSelected(3);
                        break;
                    case R.id.rb_mine:
                        setIndexSelected(4);
                        break;
                    default:
                        setIndexSelected(0);
                        break;
                }
            }
        });
    }

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            //仅当activity为task根(即首个启动activity)时才生效,这个方法不会改变task中的activity状态,
            // 按下返回键的作用跟按下HOME效果一样;重新点击应用还是回到应用退出前的状态;
            moveTaskToBack(false);
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }
}
Fragment,这里只列出HomeFragment的,其他都是一样

public class HomeFragment extends BaseFragment {

    public HomeFragment() {
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_home,container,false);
        return view;
    }


}
activity_main.xml布局文件




    

    

    

        

        

        

        

        

    


RadioButton的样式

    

Demo下载地址:http://download.csdn.net/download/baiyulinlin1/9895564

温馨提示:以后我自己写的demo都是用Android Studio写的了,用Eclipse的同学要的话需要自己改一下,时代在进步,工具也在升级!



你可能感兴趣的:(Android 底部菜单栏(RadioGroup+Fragment)美化)