天天看點

Android Fragments 詳細使用詳細介紹

其它推薦:

[原創]android版本飛鴿傳書源碼(附圖)

Android植物大戰僵屍對戰版源碼

實用源碼——Android螢幕鎖源碼

Fragments 誕生初衷

  自從Android 3.0中引入fragments 的概念,根據詞海的翻譯可以譯為:碎片、片段。其上的是為了解決不同螢幕分辯率的動态和靈活UI設計。大螢幕如平闆小螢幕如手機,平闆電腦的設計使得其有更多的空間來放更多的UI元件,而多出來的空間存放UI使其會産生更多的互動,進而誕生了fragments 。fragments 的設計不需要你來親自管理view hierarchy 的複雜變化,通過将Activity 的布局分散到frament 中,可以在運作時修改activity 的外觀,并且由activity 管理的back stack 中儲存些變化。

  Fragments 設計理念

  在設計應用時特别是Android 應用 ,有衆多的分辨率要去适應,而fragments 可以讓你在螢幕不同的螢幕上動态管理UI。例如:通訊應用程式(QQ),使用者清單可以在左邊,消息視窗在右邊的設計。而在手機螢幕使用者清單填充螢幕當點選某一使用者時,則彈出對話視窗的設計,如下圖:

Fragments的生命周期

  每一個fragments 都有自己的一套生命周期回調方法和處理自己的使用者輸入事件。 對應生命周期可參考下圖:

其中大多數程式必須使用Fragments 必須實作的三個回調方法分别為:

  onCreate

  系統建立Fragments 時調用,可做執行初始化工作或者當程式被暫停或停止時用來恢複狀态,跟Activity 中的onCreate相當。

  onCreateView

  用于首次繪制使用者界面的回調方法,必須傳回要建立的Fragments 視圖UI。假如你不希望提供Fragments 使用者界面則可以傳回NULL。

  onPause

  當使用者離開這個Fragments 的時候調用,這時你要送出任何應該持久的變化,因為使用者可能不會回來。更多的事件可以參考上圖的生命周期關系圖。

  Fragments 的類别

  系統内置了三種Fragments ,這三種Fragments 分别有不同的應用場景分别為:

  DialogFragment

  對話框式的Fragments,可以将一個fragments 對話框并到activity 管理的fragments back stack 中,允許使用者回到一個前曾摒棄fragments.

  ListFragments

  類似于ListActivity 的效果,并且還提供了ListActivity 類似的onListItemCLick和setListAdapter等功能。

  PreferenceFragments

  類似于PreferenceActivity .可以建立類似IPAD的設定界面。

  Fragments 的詳細使用

  首先先來看一張DEMO 效果圖:

左邊點選時,右邊的字元會與左邊選中的項的字元相同。與IPAD上的設定界面很相似,這一點是否借鑒了ipad 上的UI呢?

  相就的XML檔案:

主界面代碼(己做注釋):

注意:

  如果你想在Fragment 裡面建立menu,則必須在onCreate的時候設定讓它可以存在optionMenu才可以建立,代碼為:

之後的操作即可以像平常Android的menu用法一樣,代碼為:

更多詳細的使用方法,請參考SDK和APIDEMO中相關的例子和解釋。