Android應用組件之片段(Fragment)介紹1

1 概述

       Fragment 表示 Activity 中的行爲或用戶界面部分。您可以將多個片段組合在一個 Activity 中來構建多窗格 UI,以及在多個 Activity 中重複使用某個片段。您可以將片段視爲 Activity 的模塊化組成部分,它具有自己的生命週期,也能接收自己的輸入事件,並且您可以在 Activity 運行時添加或移除片段(有點像您可以在不同 Activity 中重複使用的“子 Activity”)。

       片段必須始終嵌入在 Activity 中,其生命週期直接受宿主 Activity 生命週期的影響。 例如,當 Activity 暫停時,其中的所有片段也會暫停;當 Activity 被銷燬時,所有片段也會被銷燬。 不過,當 Activity 正在運行(處於已恢復生命週期狀態)時,您可以獨立操縱每個片段,如添加或移除它們。 當您執行此類片段事務時,您也可以將其添加到由 Activity 管理的返回棧 — Activity 中的每個返回棧條目都是一條已發生片段事務的記錄。 返回棧讓用戶可以通過按返回按鈕撤消片段事務(後退)。

       當您將片段作爲 Activity 佈局的一部分添加時,它存在於 Activity 視圖層次結構的某個 ViewGroup 內部,並且片段會定義其自己的視圖佈局。您可以通過在 Activity 的佈局文件中聲明片段,將其作爲 <fragment> 元素插入您的 Activity 佈局中,或者通過將其添加到某個現有 ViewGroup,利用Java代碼進行插入。不過,片段並非必須成爲 Activity 佈局的一部分;您還可以將沒有自己 UI 的片段用作 Activity 的不可見工作線程。

2 設計原理
       Android 在3.0版本(API 級別 11)中引入了片段,主要是爲了給大屏幕(如平板電腦)上實現更加動態和靈活的 UI 設計提供支持。由於平板電腦的屏幕比手機屏幕大得多,因此可用於組合和交換 UI 組件的空間更大。利用片段實現此類設計時,您無需管理對視圖層次結構的複雜更改。 通過將 Activity 佈局分成片段,您可以在運行時修改 Activity 的外觀,並在由 Activity 管理的返回棧中保留這些更改。例如,新聞應用可以使用一個片段在左側顯示文章列表,使用另一個片段在右側顯示文章 — 兩個片段並排顯示在一個 Activity 中,每個片段都具有自己的一套生命週期回調方法,並各自處理自己的用戶輸入事件。 因此,用戶不需要使用一個 Activity 來選擇文章,然後使用另一個 Activity 來閱讀文章,而是可以在同一個 Activity 內選擇文章並進行閱讀,如圖 1 中的平板電腦佈局所示。


       您應該將每個片段都設計爲可重複使用的模塊化 Activity 組件。也就是說,由於每個片段都會通過各自的生命週期回調來定義其自己的佈局和行爲,您可以將一個片段加入多個 Activity,因此,您應該採用可複用式設計,避免直接從某個片段直接操縱另一個片段。 這特別重要,因爲模塊化片段讓您可以通過更改片段的組合方式來適應不同的屏幕尺寸。 在設計可同時支持平板電腦和手機的應用時,您可以在不同的佈局配置中重複使用您的片段,以根據可用的屏幕空間優化用戶體驗。 例如,在手機上,如果不能在同一 Activity 內儲存多個片段,可能必須利用單獨片段來實現單窗格 UI。例如 — 仍然以新聞應用爲例 — 在平板電腦尺寸的設備上運行時,該應用可以在 Activity A 中嵌入兩個片段。 不過,在手機尺寸的屏幕上,沒有足以儲存兩個片段的空間,因此Activity A 只包括用於顯示文章列表的片段,當用戶選擇文章時,它會啓動Activity B,其中包括用於閱讀文章的第二個片段。 因此,應用可通過重複使用不同組合的片段來同時支持平板電腦和手機,如上圖所示。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章