?
?一; ?简单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);
?
?
?
横屏时;
?
原文:http://baihe747.iteye.com/blog/2174516