类似于微信的在一个Activity中界面的相互切换

今天我们讲一个例子,主要的实现是通过点击界面下方的不同按钮,然后在上面显示不同的Fragment布局

步骤:

1、在res文件夹下新建一个drawable文件,然后在里面创建4个新的Selector类型的xml文件,

文件内容是:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/firstpage" android:state_checked="true"></item>
	<item android:drawable="@drawable/firstpage_blue" android:state_enabled="false"></item>
	
	<item android:drawable="@drawable/firstpage_blue"></item>
</selector>
这里我只列举了一个,其它三个和它是一样的。

2、然后就是activity_main.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"
    android:orientation="vertical" >
    <FrameLayout 
        android:id="@+id/frame"
        android:layout_height="0dp"
        android:layout_width="match_parent"
        android:layout_weight="9"
        >
    </FrameLayout>
	<RadioGroup 
	    android:id="@+id/group"
	    android:layout_height="0dp"
	    android:layout_width="match_parent"
	    android:layout_weight="1"
	    android:orientation="horizontal">
	    <RadioButton 
	        android:id="@+id/rbOne"
	        android:layout_width="0dp"
	        android:layout_weight="1"
	        android:layout_height="match_parent"
	        android:button="@null"
	        android:checked="true"
	        android:background="@drawable/rb_one_selector"/>
	     <RadioButton 
	        android:id="@+id/rbTwo"
	        android:layout_width="0dp"
	        android:layout_weight="1"
	        android:layout_height="match_parent"
	        android:button="@null"
	        android:background="@drawable/rb_two_selector"/>
	      <RadioButton 
	        android:id="@+id/rbThree"
	        android:layout_width="0dp"
	        android:layout_weight="1"
	        android:layout_height="match_parent"
	        android:button="@null"
	        android:background="@drawable/rb_three_selector"/>
	       <RadioButton 
	        android:id="@+id/rbFour"
	        android:layout_width="0dp"
	        android:layout_weight="1"
	        android:layout_height="match_parent"
	        android:button="@null"
	        android:background="@drawable/rb_four_selector"/>
	</RadioGroup>
</LinearLayout>
3、定义四个Fragment和四个xml文件,这里我们只列出一条吧,其它三条和它是一样的:

OneFrag:

package org.mobiletrain.fragment_demo13;

import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class OneFrag extends Fragment{

	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container,
			Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		return inflater.inflate(R.layout.one, null);
	}
}
第一个Fragment的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"
    android:orientation="vertical" >
    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="这时第一个界面"
        android:textSize="30sp" />
</LinearLayout>
4、接下来就是在MainActivity中实现相应的逻辑操作:

package org.mobiletrain.fragment_demo13;

import android.os.Bundle;
import android.app.Activity;
import android.app.Fragment;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.view.Menu;
import android.widget.RadioGroup;
import android.widget.RadioGroup.OnCheckedChangeListener;

public class MainActivity extends Activity {

	FragmentManager manager;
	RadioGroup group;
	OneFrag onefrag;
	TwoFrag twoFrag;
	ThreeFrag threeFrag;
	FourFrag fourFrag;
	FragmentTransaction transaction;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_home);
		group = (RadioGroup)findViewById(R.id.group);
		manager = getFragmentManager();
		onefrag = new OneFrag();
		//设置初始的Fragment
		manager.beginTransaction().replace(R.id.frame, onefrag).commit();
		//设置RadioGroup的监听事件
		group.setOnCheckedChangeListener(new OnCheckedChangeListener() {
			
			@Override
			public void onCheckedChanged(RadioGroup group, int checkedId) {
				// TODO Auto-generated method stub
				transaction = manager.beginTransaction();
				switch (checkedId) {
				case R.id.rbOne:
					//实例化一个Fragment对象然后替换掉上面的Fragment
					onefrag = new OneFrag();
					transaction.replace(R.id.frame, onefrag);
					break;
				case R.id.rbTwo:
					twoFrag = new TwoFrag();
					transaction.replace(R.id.frame, twoFrag);
					break;
				case R.id.rbThree:
					threeFrag = new ThreeFrag();
					transaction.replace(R.id.frame, threeFrag);
					break;
				case R.id.rbFour:
					fourFrag = new FourFrag();
					transaction.replace(R.id.frame, fourFrag);
					break;
				default:
					break;
				}
				//提交
				transaction.commit();
			}
		});
		
		
	}

	

}
运行效果图:








阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kuangxiaoguo0123/article/details/48739091
文章标签: android 界面
个人分类: Android开发之Fragment
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

类似于微信的在一个Activity中界面的相互切换

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭