編輯:Android開發實例
自從Android 3.0中引入fragment的概念,根據詞海的翻譯可以譯為:碎片、片段。其上的是為了解決不同屏幕分辯率的動態和靈活UI設計。大屏幕如平板小屏幕如手機,平板電腦的設計使得其有更多的空間來放更多的UI組件,而多出來的空間存放UI使其會產生更多的交互,從而誕生了fragment。fragments 的設計不需要你來親自管理view hierarchy 的復雜變化,通過將Activity 的布局分散到frament 中,可以在運行時修改activity 的外觀,並且由activity 管理的back stack 中保存些變化。
2.Fragment 設計理念在設計應用時特別是Android 應用 ,有眾多的分辨率要去適應,而fragment可以讓你在屏幕不同的屏幕上動態管理UI。例如:通訊應用程序(QQ),用戶列表可以在左邊,消息窗口在右邊的設計。而在手機屏幕用戶列表填充屏幕當點擊某一用戶時,則彈出對話窗口的設計,如下圖:
3.Fragment 生命周期每一個fragment 都有自己的一套生命周期回調方法和處理自己的用戶輸入事件。 對應生命周期可參考下圖:
1.onAttach() 當Fragment附加到Activity上調用。
2.onCreate() Fragment初始化操作
3.onCreateView() 用於首次繪制用戶界面的回調方法,必須返回要創建的Fragments 視圖UI。假如你不希望提供Fragments 用戶界面則可以返回NULL。
4.onActivityCreated() 父Activity和Fragment的UI都被完全創建完後調用。
5.onDestoryView() Fragment的UI被分離時調用。
6.onDatch() Fragment從父Activity身上分離的時候調用。
7.onPause() 當用戶離開這個Fragments 的時候調用,這時你要提交任何應該持久的變化,因為用戶可能不會回來。
4.Fragment 示例
4.1 創建Fragment
- package com.malinkang.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 FirstFragment extends Fragment {
- @Override
- /**
- * inflater用於向fragment中添加view
- * container用來存放fragment其layout的ViewGroup對象
- * savedInstanceState類似於onCreate()中相同的Bundle參數,用於恢復狀態
- */
- public View onCreateView(LayoutInflater inflater, ViewGroup container,
- Bundle savedInstanceState) {
- /**
- * inflater的inflate方法的三個參數分別是:
- *
- * int resource:fragment的layout資源ID。
- *
- * ViewGroup root:存放fragment的layout的ViewGroup
- *
- * boolean attachToRoot:是否在創建fragment的layout時,把layout添加到container上面去
- */
- return inflater.inflate(R.layout.fragment_first, container, false);
- }
- }
fragment_first.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" >
- <Button
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="第一個Fragment" />
- </LinearLayout>
4.2 添加Fragment到UI界面中
添加到UI界面有兩種方式:1.在xml文件中使用<fragment>標簽聲明 2.在Java代碼中將fragment添加到一個ViewGroup
本例采用第一種方式
最近在寫一個應用,想把設置頁面和應用頁面放在一起,這樣就能實現用戶可以實時看到自己的設置對UI的影響,從而更方便的設置用戶喜歡的界面。想了一段時間,發現用slid
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
Android提供了特殊類型的觸摸屏事件,如掐,雙擊,滾動,長按和退縮。這些都被稱為手勢。Android提供GestureDetector類接收移動事件,並告訴我們,這些
上一節中講了App->Activity->Custom Title