一、简介
承接上文:尚硅谷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(); } } } }