android 学习随笔二十三(动画:Fragment )
来源:互联网 发布:小型交易网站源码 编辑:程序博客网 时间:2024/05/25 19:59
* 用途:在一个Activity里切换界面,切换界面时只切换Fragment里面的内容
* 在一个Activity中切换多个界面,每个界面就是一个Fragment
* Fragmnent的内容也是一个View对象
* 生命周期方法跟Activity一致,可以理解把其为就是一个Activity
* fragment切换时会销毁旧的,再创建新的
* 定义布局文件作为Fragment的显示内容
//此方法返回的View就会被显示在Fragment上
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// TODO Auto-generated method stub
//用布局文件填充成一个View对象,返回出去,那么就显示在Fragment上了
View v = inflater.inflate(R.layout.fragment01, null);
return v;
}
* 把Fragment显示至指定ViewGroup中
//把fragment显示至界面
//new出fragment对象
Fragment01 fg = new Fragment01();
FragmentManager fm = getFragmentManager();
//开启事务
FragmentTransaction ft = fm.beginTransaction();
//把fragment对象显示到指定资源id的组件里面
ft.replace(R.id.fl, fg);
ft.commit();
package com.itheima.fragment;import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.view.Menu;import android.view.View;public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showfagment01(); } private void showfagment01() { //1.创建fragment对象 Fragment01 fragment1 = new Fragment01(); //2.获取fragment管理器 FragmentManager fm = getFragmentManager(); //3.开启事务 FragmentTransaction ft = fm.beginTransaction(); //4.显示fragment //arg0:设置把fragment显示在哪个容器中 ft.replace(R.id.fl, fragment1); //5.提交 ft.commit(); } public void click1(View v){ showfagment01(); } public void click2(View v){ //1.创建fragment对象 Fragment02 fragment2 = new Fragment02(); //2.获取fragment管理器 FragmentManager fm = getFragmentManager(); //3.开启事务 FragmentTransaction ft = fm.beginTransaction(); //4.显示fragment //arg0:设置把fragment显示在哪个容器中 ft.replace(R.id.fl, fragment2); //5.提交 ft.commit(); } public void click3(View v){ //1.创建fragment对象 Fragment03 fragment3 = new Fragment03(); //2.获取fragment管理器 FragmentManager fm = getFragmentManager(); //3.开启事务 FragmentTransaction ft = fm.beginTransaction(); //4.显示fragment //arg0:设置把fragment显示在哪个容器中 ft.replace(R.id.fl, fragment3); //5.提交 ft.commit(); } }
package com.itheima.fragment;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment01 extends Fragment { //系统自动调用,返回的View对象作为Fragment的内容显示 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment01, null); return v; }}
package com.itheima.fragment;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment02 extends Fragment { //系统自动调用,返回的View对象作为Fragment的内容显示 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment02, null); return v; }}
package com.itheima.fragment;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment03 extends Fragment { //系统自动调用,返回的View对象作为Fragment的内容显示 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment03, null); return v; }}
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.itheima.fragment" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.itheima.fragment.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application></manifest>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:orientation="horizontal" > <FrameLayout android:id="@+id/fl" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" ></FrameLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="界面1" android:onClick="click1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="界面2" android:onClick="click2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="界面3" android:onClick="click3" /> </LinearLayout></LinearLayout>
<?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="#00ff00" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp" android:text="这是plus的帽子的绿色" /></LinearLayout>
<?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="wrap_content" android:layout_height="wrap_content" android:textSize="30sp" android:text="这是热情的红色" /></LinearLayout>
<?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="#0000ff" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp" android:text="这是plus戴上帽子的心情的蓝色" /></LinearLayout>
- 生命周期
* fragment切换时旧fragment对象会销毁,新的fragment对象会被创建
- 低版本兼容
* 在support-v4.jar包中有相关api,也就是说fragment可以在低版本模拟器运行
package com.itheima.fragment;import android.os.Bundle;import android.annotation.SuppressLint;import android.support.v4.app.FragmentActivity;import android.support.v4.app.FragmentManager;import android.support.v4.app.FragmentTransaction;import android.view.Menu;import android.view.View;public class MainActivity extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showfagment01(); } private void showfagment01() { //1.创建fragment对象 Fragment01 fragment1 = new Fragment01(); //2.获取fragment管理器 FragmentManager fm = getSupportFragmentManager(); //3.开启事务 FragmentTransaction ft = fm.beginTransaction(); //4.显示fragment //arg0:设置把fragment显示在哪个容器中 ft.replace(R.id.fl, fragment1); //5.提交 ft.commit(); } public void click1(View v){ showfagment01(); } public void click2(View v){ //1.创建fragment对象 Fragment02 fragment2 = new Fragment02(); //2.获取fragment管理器 FragmentManager fm = getSupportFragmentManager(); //3.开启事务 FragmentTransaction ft = fm.beginTransaction(); //4.显示fragment //arg0:设置把fragment显示在哪个容器中 ft.replace(R.id.fl, fragment2); //5.提交 ft.commit(); } public void click3(View v){ //1.创建fragment对象 Fragment03 fragment3 = new Fragment03(); //2.获取fragment管理器 FragmentManager fm = getSupportFragmentManager(); //3.开启事务 FragmentTransaction ft = fm.beginTransaction(); //4.显示fragment //arg0:设置把fragment显示在哪个容器中 ft.replace(R.id.fl, fragment3); //5.提交 ft.commit(); } }
package com.itheima.fragment;import android.os.Bundle;import android.support.v4.app.Fragment;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;public class Fragment01 extends Fragment { //系统自动调用,返回的View对象作为Fragment的内容显示 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment01, null); return v; }}
- Fragment和Activity传递数据
package com.itheima.transmit;import android.os.Bundle;import android.annotation.SuppressLint;import android.app.Activity;import android.app.FragmentManager;import android.app.FragmentTransaction;import android.view.Menu;import android.view.View;import android.widget.EditText;import android.widget.TextView;public class MainActivity extends Activity { private Fragment01 fragment1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); showfagment01(); } private void showfagment01() { //1.创建fragment对象 fragment1 = new Fragment01(); //2.获取fragment管理器 FragmentManager fm = getFragmentManager(); //3.开启事务 FragmentTransaction ft = fm.beginTransaction(); //4.显示fragment //arg0:设置把fragment显示在哪个容器中 ft.replace(R.id.fl, fragment1); //5.提交 ft.commit(); } public void click1(View v){ showfagment01(); } public void click2(View v){ //1.创建fragment对象 Fragment02 fragment2 = new Fragment02(); //2.获取fragment管理器 FragmentManager fm = getFragmentManager(); //3.开启事务 FragmentTransaction ft = fm.beginTransaction(); //4.显示fragment //arg0:设置把fragment显示在哪个容器中 ft.replace(R.id.fl, fragment2); //5.提交 ft.commit(); } public void click3(View v){ //1.创建fragment对象 Fragment03 fragment3 = new Fragment03(); //2.获取fragment管理器 FragmentManager fm = getFragmentManager(); //3.开启事务 FragmentTransaction ft = fm.beginTransaction(); //4.显示fragment //arg0:设置把fragment显示在哪个容器中 ft.replace(R.id.fl, fragment3); //5.提交 ft.commit(); } public void click4(View v){ EditText et_main = (EditText) findViewById(R.id.et_main); String text = et_main.getText().toString(); fragment1.setText(text); } public void setText(String text){ TextView tv_main = (TextView) findViewById(R.id.tv_main); tv_main.setText(text); } }
package com.itheima.transmit;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.webkit.WebView.FindListener;import android.widget.TextView;public class Fragment01 extends Fragment { private TextView tv; //系统自动调用,返回的View对象作为Fragment的内容显示 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment01, null); tv = (TextView) v.findViewById(R.id.tv_fragment1); return v; } public void setText(String text){ tv.setText(text); }}
package com.itheima.transmit;import android.app.Fragment;import android.os.Bundle;import android.view.LayoutInflater;import android.view.View;import android.view.View.OnClickListener;import android.view.ViewGroup;import android.widget.Button;import android.widget.EditText;public class Fragment03 extends Fragment implements OnClickListener { private EditText et; //系统自动调用,返回的View对象作为Fragment的内容显示 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment03, null); Button bt_fragment03 = (Button) v.findViewById(R.id.bt_fragment03); et = (EditText) v.findViewById(R.id.et_fragment03); bt_fragment03.setOnClickListener(this); return v; } @Override public void onClick(View v) { String text = et.getText().toString(); ((MainActivity)getActivity()).setText(text); } }
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:orientation="horizontal" > <FrameLayout android:id="@+id/fl" android:layout_weight="1" android:layout_width="0dp" android:layout_height="match_parent" ></FrameLayout> <LinearLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:orientation="vertical" > <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="界面1" android:onClick="click1" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="界面2" android:onClick="click2" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="界面3" android:onClick="click3" /> <EditText android:id="@+id/et_main" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="提交" android:onClick="click4" /> <TextView android:id="@+id/tv_main" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout></LinearLayout>
<?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="#00ff00" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp" android:text="这是plus的帽子的绿色" /> <TextView android:id="@+id/tv_fragment1" android:layout_width="wrap_content" android:layout_height="wrap_content" /></LinearLayout>
<?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="#0000ff" > <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="30sp" android:text="这是plus戴上帽子的心情的蓝色" /> <EditText android:id="@+id/et_fragment03" android:layout_width="match_parent" android:layout_height="wrap_content" /> <Button android:id="@+id/bt_fragment03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="提交" /></LinearLayout>
- android 学习随笔二十三(动画:Fragment )
- 选项卡使用方法二(Android学习随笔十三)
- android 学习随笔二十四(动画:帧动画)
- android 学习随笔二十五(动画:补间动画)
- android 学习随笔二十六(动画:属性动画)
- Android学习路线(二十三)运用Fragment构建动态UI——Fragment间通讯
- android 项目学习随笔三(Fragment )
- android 学习随笔十三(网络:多线程下载)
- Android手机壁纸(Android学习随笔二)
- Android学习记录(二十三)-Android Fragment onBackPressed的处理。
- android 学习随笔二十二(小结)
- Android随笔随想-GUI-Fragment相关学习
- Android 动画学习(二)
- 随笔二十三:为什么要学习机器代码?
- Android Fragment学习笔记(二)
- Android Fragment学习笔记(二)
- Android Fragment学习笔记(二)
- Android之Fragment学习(二)
- android 学习随笔十八(广播与服务 )
- android 学习随笔十九(对话框、样式、主题、国际化 )
- android 学习随笔二十(多媒体编程 )
- android 学习随笔二十一(内容提供者 )
- android 学习随笔二十二(小结)
- android 学习随笔二十三(动画:Fragment )
- android 学习随笔二十四(动画:帧动画)
- android 学习随笔二十五(动画:补间动画)
- OProfile入门——安装篇
- android 学习随笔二十六(动画:属性动画)
- 一个内核调试函数的实现
- android 学习随笔二十七(JNI:Java Native Interface,JAVA原生接口 )
- android 学习随笔二十八(应用小知识点小结 )
- K-means聚类算法及其各种变形模型的实验分析