尚硅谷Android项目之_硅谷商城项目全套源码解析(二、主框架搭建)

一、简介

承接上文:尚硅谷Android项目之_硅谷商城项目全套源码解析(一、综述)

上篇博客概括的介绍了硅谷商城项目的运行效果和使用的技术要点。本篇内容给大家讲解硅谷商城项目主框架的搭建。


 二、详细资源地址

由于篇幅所限,详情情况见如下地址视频和笔记

项目免费视频讲解下载地址:http://www.atguigu.com/download.shtml

github地址:https://github.com/atguigu01/Shopping

作者:大海哥


三、运行效果


四、页面布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ffffff"
    android:orientation="vertical"
    tools:context=".app.MainActivity">

    <FrameLayout
        android:id="@+id/frameLayout"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1" />

    <RadioGroup
        android:id="@+id/rg_main"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:background="@drawable/home_bottom_parent_bg"
        android:orientation="horizontal">

        <RadioButton
            android:id="@+id/rb_home"
            style="@style/MainButtonStyle"
            android:drawableTop="@drawable/home_button_selector"
            android:text="首页" />

        <RadioButton
            android:id="@+id/rb_type"
            style="@style/MainButtonStyle"
            android:drawableTop="@drawable/type_button_selector"
            android:text="分类" />

        <RadioButton
            android:id="@+id/rb_community"
            style="@style/MainButtonStyle"
            android:drawableTop="@drawable/community_button_selector"
            android:paddingTop="10dp"
            android:text="发现" />

        <RadioButton
            android:id="@+id/rb_cart"
            style="@style/MainButtonStyle"
            android:drawableTop="@drawable/cart_button_selector"
            android:text="购物车" />

        <RadioButton
            android:id="@+id/rb_user"
            style="@style/MainButtonStyle"
            android:drawableTop="@drawable/user_button_selector"
            android:text="个人中心" />
    </RadioGroup>

</LinearLayout>
 
 

五、代码

代码主要是监听RadioGroup选择事件,切换不同的Fragment;

具体代码如下:

1、初始化Fragment

private void initFragment() {
    fragments = new ArrayList<>();
    typeFragment = new TypeFragment();
    fragments.add(new HomeFragment());
    fragments.add(typeFragment);
    fragments.add(new CommunityFragment());
    fragments.add(new ShoppingCartFragment());
    fragments.add(new UserFragment());
}
2、初始化RadioGroup的监听事件

private void initListener() {

    rgMain.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {

            switch (checkedId) {
                case R.id.rb_home:
                    position = 0;
                    break;

                case R.id.rb_type:
                    position = 1;
                    break;

                case R.id.rb_community:
                    position = 2;
                    break;

                case R.id.rb_cart:
                    position = 3;
                    break;

                case R.id.rb_user:
                    position = 4;
                    break;
            }

            BaseFragment baseFragment = getFragment(position);
            switchFragment(mContext, baseFragment);
        }
    });

    rgMain.check(R.id.rb_home);
}
3、获取选择的Fragment

private BaseFragment getFragment(int position) {

    if (fragments != null && fragments.size() > 0) {
        BaseFragment baseFragment = fragments.get(position);
        return baseFragment;
    }

    return null;
}
4、切换相应的Fragment

private void switchFragment(Fragment fromFragment, BaseFragment nextFragment) {

    if (mContext != nextFragment) {

        mContext = nextFragment;

        if (nextFragment != null) {
            FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();

            //判断nextFragment是否添加
            if (!nextFragment.isAdded()) {
                //隐藏当前Fragment
                if (fromFragment != null) {
                    transaction.hide(fromFragment);
                }
                transaction.add(R.id.frameLayout, nextFragment).commit();
            } else {
                //隐藏当前Fragment
                if (fromFragment != null) {
                    transaction.hide(fromFragment);
                }
                transaction.show(nextFragment).commit();
            }
        }
    }
}



猜你喜欢

转载自blog.csdn.net/atguigu_com/article/details/53876927