讀古今文學網 > Android程序設計:第2版 > 第7章 Fragment和跨平台支持 >

第7章 Fragment和跨平台支持

現在,我們已經編寫了一些Android代碼,瞭解到了Activity類、View類及View類的layout和widget子類是Android中最重要的類。通常情況下,Android用戶接口是使用佈局中的widget視圖構建的,例如LinearLayout的ListView。當啟動Activity時,會從資源加載單層次的視圖對像(或者是通過代碼創建)。該視圖對像會被初始化並在設備屏幕上顯示。

對於較小的屏幕,這種方式工作良好。用戶在不同屏幕之間移動以訪問應用程序UI的不同部分,Activity類(Android的任務概念)支持備用棧,它支持通過嚴格的樹結構接口的快速、直觀的遍歷。但是,當UI是在更大的平板屏幕上顯示時,情況就會大大不同。屏幕的有些部分在較長的時間內都會保持不變;有些部分決定其他部分的顯示內容。像一張卡片那樣的顯示就不太適合這種大屏幕了。

通過顯示和隱藏一些視圖,簡單地實現一個支持屏幕上某些內容根據另一部分的activity變化而變化是完全有可能的。然而,Android的開發人員認為他們除了鼓勵創建出在傳統的大屏幕上也具有良好的一致性和體驗的用戶界面之外,還可以做更多的事情。為了支持這種新型互動,他們基於Fragment類引入了一個新的功能,該功能已經成為Android 3.0 SDK(API 11,Honeycomb)的一部分。

Fragment對像介於View和Activity之間。和View一樣,可以把Fragment對像加入ViewGroup或者作為佈局的一部分。然而,它不是View的子類,其只能通過FragmentTransaction添加到ViewGroup中。和Activity一樣,Fragment也有生命週期,並實現了接口ComponentCallbacks和接口View.OnCreateContextMenuListener。但是,和Activity不同的是,Fragment不是Context,其生命週期取決於其所屬的Activity的生命週期。

Fragment是Android API的一個很大的變動。為了簡化向新API的過渡,Google提供了兼容庫,最早可以支持到1.6版本(API 4,Donut)的SDK。我們將在後面探討後期的兼容性。現在先來瞭解下其本地環境蜂巢的fragment,在Android 3.0及後續版本中運行。