android Fragment入门
Fragment是android3.0引入的,为什么google推出Fragment呢?主要目的是用在大屏幕设备上--例如平板电脑上,支持更加动态和灵活的UI设计。平板电脑的屏幕要比手机的大得多,有更多的空间来放更多的UI组件,并且这些组件之间会产生更多的交互,Fragment允许这样的一种设计,而不需要你亲自来管理 viewhierarchy的复杂变化。 通过将activity的布局分散到fragment中, 你可以在运行时修改activity的外观,可以把Fragment看作是activity界面上的一部分,首先看下图:
第一张图我们看到,点击左边的item跳转到右边的布局上显示,这时候就要启动一个activity,而下面的图点击左边的item,可以在右边显示,用Fragment来显示就行,而不用启动activity,我们知道activity是android的组件,所以它比Fragment占用的内存就大,这就是为什么在大点的屏幕推荐使用Fragment
现在创建一个Android项目Fragment1
activity_main.xml
<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:orientation="horizontal" tools:context=".MainActivity" > <fragment android:name="com.example.fragment1.Fragment1" android:id="@+id/fragment1" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1" /> <fragment android:name="com.example.fragment1.Fragment2" android:id="@+id/fragment2" android:layout_width="0dip" android:layout_height="match_parent" android:layout_weight="1" /> </LinearLayout>
在布局中发现一个节点fragment,而我们以前layout中view都是大写字母开头,比如:TextView,所以fragment并不是一个view对象,而是一种类型,android:name指的是Fragment类的全类名,所以Fragment1要继承Fragment对象,如果是使用 android.app.Fragment包下的,那么指定的最小版本必须是11(android:minSdkVersion="11")小于11程序就会报错,因为系统的Fragment是3.0出现的,
Fragment1.java
package com.example.fragment1; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment1 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment1, null); } }
fragment1.xml
<pre name="code" class="java"><?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background="#ff0000" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是第一个fragment" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout>
Fragment2.java
package com.example.fragment1; import android.app.Fragment; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; public class Fragment2 extends Fragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment2, null); } }
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:background="#0000ff" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="我是第二个fragment" android:textAppearance="?android:attr/textAppearanceLarge" /> </LinearLayout>
MainActivity.java
package com.example.fragment1; import android.os.Bundle; import android.app.Activity; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
我们看到MainActivity类中并没有写任何代码,这是静态创建Fragment,效果图:
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。