主界面布局改版:
Fragment替代RadioGroup,之前总是用RadioGroup做主界面的跳转,其实很早就放弃了,已经用Fragment替代了,一直没写,学习时间也没多少,最近闲下来,把自己的知识总结总结,俗话说的好,再好的脑子总是比不上一个烂笔头;
首先上布局文件:tabmenu_layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/progress_bg"
android:orientation="vertical">
<FrameLayout
android:id="@+id/id_content"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginBottom="40dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:background="@color/white"
android:orientation="horizontal"
android:paddingBottom="3dp"
android:paddingTop="3dp"
android:weightSum="1">
<TextView
android:id="@+id/start_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.25"
android:drawablePadding="3dp"
android:drawableTop="@drawable/start_layout"
android:gravity="center"
android:paddingTop="3dp"
android:text="主页"
android:textColor="@color/tab_color_bg"
android:textSize="14sp"
/>
<TextView
android:id="@+id/shop_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.25"
android:drawablePadding="3dp"
android:drawableTop="@drawable/shop_layout"
android:gravity="center"
android:paddingTop="3dp"
android:text="购物车"
android:textColor="@color/tab_color_bg"
android:textSize="14sp"/>
<TextView
android:id="@+id/order_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.25"
android:drawablePadding="3dp"
android:drawableTop="@drawable/order_layout"
android:gravity="center"
android:paddingTop="3dp"
android:text="订单"
android:textColor="@color/tab_color_bg"
android:textSize="14sp"/>
<TextView
android:id="@+id/myself_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="0.25"
android:drawablePadding="3dp"
android:drawableTop="@drawable/myself_layout"
android:gravity="center"
android:paddingTop="3dp"
android:text="我的"
android:textColor="@color/tab_color_bg"
android:textSize="14sp"/>
</LinearLayout>
</RelativeLayout>
其中 TextView的字体颜色,是在color.xml文件中存放两种状态颜色值
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:color="@color/变色颜色" android:state_selected="true"/>
<item android:color="@color/默认颜色" />
</selector>
而android:drawableTop是调用Drawable文件夹中的layout文件:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/变色图" android:state_selected="true"/>
<item android:drawable="@drawable/默认"/>
</selector>
代码文件(算得上是最原始的代码了,没啥框架):
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.TextView;
import butterknife.Bind;
import butterknife.ButterKnife;
public class MainMenuActivity extends FragmentActivity implements View.OnClickListener {
@Bind(R.id.id_content)
FrameLayout mIdContent;
@Bind(R.id.start_tv)
TextView mStartTv;
@Bind(R.id.shop_tv)
TextView mShopTv;
@Bind(R.id.order_tv)
TextView mOrderTv;
@Bind(R.id.myself_tv)
TextView mMyselfTv;
private TextView[] tv;
private Fragment[] mFragments;
private int curIndex;
private StartFragment mStartFragment = new StartFragment();
private ShopFragment mShopFragment = new ShopFragment();
private OrderFragment mOrderFragment = new OrderFragment();
private MyselfFragment mMyselfFragment = new MyselfFragment();
private FragmentManager mManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.tabmenu_layout);
ButterKnife.bind(this);
Viewinit();
}
private void Viewinit() {
tv = new TextView[]{mStartTv, mShopTv, mOrderTv, mMyselfTv};
mFragments = new Fragment[]{mStartFragment, mShopFragment, mOrderFragment, mMyselfFragment};
for (int i = 0; i < tv.length; i++) {
tv[i].setOnClickListener(this);
}
mManager = this.getSupportFragmentManager();
FragmentTransaction transaction = mManager.beginTransaction();
for (Fragment fragmnt : mFragments) {
transaction.add(R.id.id_content, fragmnt).hide(fragmnt);
}
transaction.show(mFragments[0]);
transaction.commit();
mStartTv.setSelected(true);
}
@Override
public void onClick(View view) {
int index = 0;
switch (view.getId()) {
case R.id.start_tv:
index = 0;
break;
case R.id.shop_tv:
index = 1;
break;
case R.id.order_tv:
index = 2;
break;
case R.id.myself_tv:
index = 3;
break;
}
if (curIndex != index) {
tv[index].setSelected(true);
tv[curIndex].setSelected(false);
openFragment(mFragments[index], true);
openFragment(mFragments[curIndex], false);
curIndex = index;
}
}
private void openFragment(Fragment mfragment, boolean mshow) {
FragmentTransaction tt = mManager.beginTransaction();
if (mshow) {
tt.show(mfragment);
} else {
tt.hide(mfragment);
}
tt.commit();
}
}
其中@Bind是直接使用compile 'com.jakewharton:butterknife:7.0.1'