Androidbby

来源:互联网 发布:2016年制造业数据 编辑:程序博客网 时间:2024/06/12 01:36
     private static final int QUANTITY = 4;
    private FrameLayout flMain;
    private List<Fragment> fragments;
    private RadioGroup rgNavigation;
    private int currentIndex = 0;
 
 //导航切换
    private void radioGroupManage() {
        fragments = new ArrayList<>();
        final RadioButton[] buttons=new RadioButton[QUANTITY];
        assert rgNavigation!=null;
        for(int i=0;i<rgNavigation.getChildCount();i++){
            //获取第i个位置上的子控件
            buttons[i] = (RadioButton) rgNavigation.getChildAt(i);
            //往集合中添加Fragment对象
            fragments.add(FragmentFactory.createFragment(i));
        }
        //默认加载第一个Fragment对象
        getSupportFragmentManager().beginTransaction().add(R.id.fl_main,fragments.get(0)).commit();
        //处理单机事件
        rgNavigation.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                for(int i=0;i<rgNavigation.getChildCount();i++){
                    if(buttons[i].getId()==checkedId){
                        switchFragment(i);
                    }
                }
            }
        });
    }


    //切换Fragment的方法
    private void switchFragment(int targetIndex) {
        //目标的Fragment
        Fragment targetFragment = fragments.get(targetIndex);
        //当前的Fragment
        Fragment currentFragment = fragments.get(currentIndex);
        FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
        if(targetFragment.isAdded()){
            //目标Fragment已经被添加了...则隐藏当前正在展示的Fragment,显示目标Fragment
            fragmentTransaction.hide(currentFragment).show(targetFragment);
        }else {
            //没有被添加...则隐藏当前的Fragment,添加目标Fragment
            fragmentTransaction.hide(currentFragment).add(R.id.fl_main,targetFragment);
        }
        fragmentTransaction.commit();
        //改变当前索引值
        currentIndex=targetIndex;
    }


public class FragmentFactory  {
    private static final int FRAGMENT_INDEX = 0;
    private static final int FRAGMENT_CATEGORY = 1;
    private static final int FRAGMENT_FIND = 2;
    private static final int FRAGMENT_MINE = 3;
    private static SparseArray<Fragment> fragments = new SparseArray<>();


    public static Fragment createFragment(int index){
        Fragment fragment = fragments.get(index);
        if(fragment == null){
            switch (index){
                case FRAGMENT_INDEX:
                    fragment = new IndexFragment();
                    break;
                case FRAGMENT_CATEGORY:
                    fragment =  new CategoryFragment();
                   break;
                case FRAGMENT_FIND:
                    fragment =  new FindFragment();
                   break;
                case FRAGMENT_MINE:
                    fragment =  new MineFragment();
                   break;
            }
            fragments.put(index,fragment);
        }
        return fragment;
    }
}


<style name="rb_style">
    <item name="android:gravity">center</item>
    <item name="android:layout_width">0dp</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:layout_weight">1</item>
    <item name="android:button">@null</item>
</style>


<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="bby.com.projecttemplate.ui.MainActivity">
    <FrameLayout
        android:id="@+id/fl_main"
        android:layout_above="@+id/rg_navigation_main"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    <!--<TextView-->
        <!--android:layout_width="match_parent"-->
        <!--android:layout_height="1dp"-->
        <!--android:background="#c4c3c3"/>-->
    <RadioGroup
        android:id="@+id/rg_navigation_main"
        android:layout_alignParentBottom="true"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:padding="2dp"
        android:background="#fff">
        <RadioButton
            android:id="@+id/rb_index_navigation_main"
            style="@style/rb_style"
            android:text="首页"
            android:checked="true"
            android:drawableTop="@drawable/selector_navigation_index"/>
        <RadioButton
            android:id="@+id/rb_category_navigation_main"
            style="@style/rb_style"
            android:text="分类"
            android:drawableTop="@drawable/selector_navigation_category"/>
        <RadioButton
            android:id="@+id/rb_find_navigation_main"
            style="@style/rb_style"
            android:text="发现"
            android:drawableTop="@drawable/selector_navigation_find"/>
        <RadioButton
            android:id="@+id/rb_mine_navigation_main"
            style="@style/rb_style"
            android:text="我"
            android:drawableTop="@drawable/selector_navigation_mine"/>
    </RadioGroup>
</RelativeLayout>







原创粉丝点击