这个是上一篇的扩展,做的东西是一样的,只是效果不同
http://blog.youkuaiyun.com/i_do_can/article/details/50411600
个人感觉使用那么多activity好麻烦,所以使用Fragment实现,代码实现,代码简单了,就是少了左右滑动的效果,看个人喜好吧
看一下完成后的图片:
再看一下代码结构:只有两个acvitity,其实可以做到只有一个,万一有人不会按钮跳转呢,所以留着做欢迎界面
界面很丑,不要嫌弃,只是实现功能而已
MainAvtivity里就几句话:
findViewById(R.id.main_btn).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this, TestActivity.class);
startActivity(intent);
}
});
TestActivity需要extends FragmentActivity ,看一下代码:
package android.cl.com.uitest;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.widget.RadioGroup;
public class TestActivity extends FragmentActivity {
private Fragment fragment;
private RadioGroup myTabRg;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
initView();
}
public void initView(){
fragment = new TestFragment();
getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment).commit();
myTabRg = (RadioGroup) findViewById(R.id.tab_menu);
myTabRg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// TODO Auto-generated method stub
switch (checkedId) {
case R.id.rb_test:
fragment = new TestFragment();
Log.i("MyFragment", "TestFragment");
getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment)
.commit();
break;
case R.id.rb_result:
fragment = new ResultFragment();
Log.i("MyFragment", "ResultFragment");
getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment).commit();
break;
case R.id.rb_message:
fragment = new MessageFragment();
Log.i("MyFragment", "MessageFragment");
getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment)
.commit();
break;
case R.id.rb_setting:
fragment = new SettingFragment();
Log.i("MyFragment", "SettingFragment");
getSupportFragmentManager().beginTransaction().replace(R.id.main_content, fragment)
.commit();
break;
default:
break;
}
}
});
}
}
布局文件:activity_test.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<FrameLayout
android:id="@+id/main_content"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="0.78" />
<RadioGroup
android:id="@+id/tab_menu"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="#C4C4C4">
<RadioButton
android:id="@+id/rb_test"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_weight="1"
android:button="@null"
android:gravity="center_horizontal|bottom"
android:paddingTop="2dp"
android:text="测试"
android:textSize="30dp"
android:checked="true"
<span style="color:#ff0000;"> android:textColor="@drawable/tab_selector_tv_color"
android:background="@drawable/tab_selector_checked_bg"</span>
/>
<RadioButton
android:id="@+id/rb_result"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_weight="1"
android:button="@null"
android:gravity="center_horizontal|bottom"
android:paddingTop="2dp"
android:text="结果"
android:textSize="30dp"
android:textColor="@drawable/tab_selector_tv_color"
android:background="@drawable/tab_selector_checked_bg"
/>
<RadioButton
android:id="@+id/rb_message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_weight="1"
android:button="@null"
android:gravity="center_horizontal|bottom"
android:paddingTop="2dp"
android:text="信息"
android:textSize="30dp"
android:textColor="@drawable/tab_selector_tv_color"
android:background="@drawable/tab_selector_checked_bg"
/>
<RadioButton
android:id="@+id/rb_setting"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:layout_weight="1"
android:button="@null"
android:gravity="center_horizontal|bottom"
android:paddingTop="2dp"
android:text="配置"
android:textSize="30dp"
android:textColor="@drawable/tab_selector_tv_color"
android:background="@drawable/tab_selector_checked_bg"
/>
</RadioGroup>
</LinearLayout>
上面标红的地方是用了选择器,在切换界面时改变按钮的背景和字体颜色
tab_selector_checked_bg.xml:
<?xml version="1.0" encoding="utf-8"?>
<!--用于控制切换的时候显示button背景的颜色 ,使用 drawable -->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:drawable="@color/colorGrey"/>
</selector>
tab_selector_tv_color.xml:
<?xml version="1.0" encoding="utf-8"?>
<!--用于控制切换的时候显示下面字体的颜色-->
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_checked="true" android:color="@android:color/black"/>
<item android:state_checked="false" android:color="@color/colorGrey"/>
</selector>
四个界面的布局文件基本都是一样的,贴出一个content_result.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/resultListView"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_above="@+id/button2" />
</LinearLayout>
ResultFragment需要 extends Fragment,这四个也都是差不多的,贴出其中一个
package android.cl.com.uitest;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.List;
public class ResultFragment extends Fragment {
public ResultFragment() {
// Required empty public constructor
}
private ListView listView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
/*
在 fragment 里面调用 findViewById
1.是在 onCreateView 中
2.是 view.findViewById 而不是 activity.findViewById
*
* */
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//我们设置一个List集合,然后向里边添加几条数据
List<String> ls = new ArrayList<String>();
ls.add("结果1");
ls.add("结果2");
ls.add("结果3");
View view = inflater.inflate(R.layout.content_result, container, false);
listView = (ListView)view.findViewById(R.id.resultListView);
//获取xml文件中listView控件
listView.findViewById(R.id.resultListView);
//然后为listView控件调用setAdapter方法,让数据显示在界面上。
listView.setAdapter(new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1, ls));
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
//通过单击事件,获得单击选项的内容
String text = listView.getItemAtPosition(arg2) + "";
//通过Toast对象显示出来。
Toast.makeText(getContext(), text, Toast.LENGTH_SHORT).show();
}
});
return view;
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<RadioGroup
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_above="@+id/button2"
android:weightSum="1">
<!--
第一步:
android:button="@null"这条语句将原来系统的RadioButton图标给隐藏起来。
第二步:
android:drawableRight="@android:drawable/btn_radio"这条语句
在原来图标的右边添加一个系统自带的btn_radio图标,我想RadioButton就是在btn_radio图标上进行封装而已。
-->
<RadioButton
android:layout_width="120pt"
android:layout_height="wrap_content"
android:text="1080P"
android:id="@+id/radioButton"
android:button="@null"
android:drawableRight="@android:drawable/btn_radio" />
<RadioButton
android:layout_width="120pt"
android:layout_height="wrap_content"
android:text="720P"
android:id="@+id/radioButton2"
android:button="@null"
android:drawableRight="@android:drawable/btn_radio"/>
</RadioGroup>
</LinearLayout>
OK,完成啦!