一; 简单Fragment的使用;
效果图;
代码实现:
1), 创建fragment1.xml布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#00FF00">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is fragment #1"
android:textSize="25sp"
/>
</LinearLayout>
2,创建fragment2.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"
android:background="#FF0000"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="This is fragment #2"
android:textSize="25sp"
/>
</LinearLayout>
3,创建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" >
<fragment
android:name="com.example.frament.Frament1" 类名的完整地址
android:id="@+id/frament1"
android:layout_weight="1"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
<fragment
android:name="com.example.frament.Frament2" 类名的完整地址
android:id="@+id/fragment2"
android:layout_weight="1"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
/>
</LinearLayout>
4,在com.example.frament包下创建Fragment1
package com.example.frament;
import android.annotation.SuppressLint;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@SuppressLint("NewApi")
public class Frament1 extends Fragment {
@SuppressLint("NewApi")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.frament1, container,false);
}
}
5,在com.example.frament包下创建Fragment2
package com.example.frament;
import android.annotation.SuppressLint;
import android.app.Fragment;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@SuppressLint("NewApi")
public class Frament2 extends Fragment {
@SuppressLint("NewApi")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.frament2, container,false);
}
}
6,创建Activity的类MainActivity1(启动类)
public class MainActivity1 extends Activity {
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
分析:
使用fragment来添加碎片需要使用一个类继承Fragment
public class Frament2 extends Fragment {
在ui中绘制,需要重写onCreateView()方法,该方法返回一个View对象,如下所示;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
return inflater.inflate(R.layout.frament2, container,false);
}
使用LayoutInflater 制定布局文件,container参数引用父类 即准备碎片活动 ,savedInstanceState 碎片可以还原到前一次的状态
二;Fragment的动态添加
前五步的代码与上面一样
6,创建Activity的类MainActivity1(启动类)
package com.example.frament;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.FragmentManager;
import android.app.FragmentTransaction;
import android.os.Bundle;
import android.view.Display;
public class MainActivity1 extends Activity {
@SuppressLint("NewApi")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setContentView(R.layout.main);
//向活动添加碎片,根据屏幕的纵向和横向显示
//1,获取碎片管理器
FragmentManager fragment=getFragmentManager();
//2,碎片的显示需要使用FragmentTransaction类操作
FragmentTransaction transacction=fragment.beginTransaction();
//获取屏幕管理器和默认的显示
Display display=getWindowManager().getDefaultDisplay();
//判断横屏
if(display.getWidth()>display.getHeight()){
//获取java类
Frament1 frament1 = new Frament1();
transacction.replace(android.R.id.content, frament1);
}else{
Frament2 frament2 = new Frament2();
transacction.replace(android.R.id.content, frament2);
}
//使用FragmentTransaction必须要commit
transacction.commit();
}
}
分析:
向活动添加Fragment需要使用FragmentManager类,
FragmentManager fragment=getFragmentManager();
操作fragment需要使用FragmentTransaction进行碎片的添加,删除等操作
FragmentTransaction transacction=fragment.beginTransaction();
获取手机的屏幕
Display display=getWindowManager().getDefaultDisplay();
当前页面替换成 frament1
transacction.replace(android.R.id.content, frament1);
横屏时;