天天看點

Android 建構使用者界面與Android的碎片

http://www.developer.com/ws/android/development-tools/building-uis-with-android-fragments.html

雖然片段簡化了編碼的動态使用者界面,使用它們的有一個小的開銷成本。雖然你的布局将最終确定的代碼片段顯示,仍然需要做出決定,以确定是否要更新現有的片段,或推出一個新的活動,該片段應不存在于目前活動内容。

例如,下面的代碼使用的findfragmentbyid()方法,以确定是否一個片段是在一個特定的布局。如果沒有定義,推出一個新的活動,以顯示該片段。

您還需要的隻是像以前的許多活動課,雖然不是所有人都可以使用每個裝置上。有什麼理由不來設計你的應用程式的片段,即使您目前的ui設計或目标裝置不要求他們在這個時候。在未來,支援多種裝置時,大多數應用程式可能會找到好的用例的片段,雖然遊戲使用他們自己的架構,通過opengl實作與所有的使用者界面可能是一個合理的異常。

由于現在使用者互動的情況通常發生在,片段本身,則需要進行編碼的邏輯,以确定是否啟動一個活動中的與片段本身,或從父活動。無論哪種方式,需要一些通信之間的片段和其活性。任何片段可以調用getactivity()方法來确定它存在于activity類的。從那裡,調用活動的ui方法可以使片段,以确定更多的螢幕和布局。或者,更簡單,片段可以隻調用一個方法,在一個活動中,但此檢查需求。通過一個偵聽器對象通過添加一個回調,我們已經走了這條路線。定制的片斷類和監聽器的接口中定義的方法來實作在activity類的。下面是一個完整的實施的listfragment類:

正如你可以看到,這個方法很簡單。擴充卡被設定在onactivitycreated()方法。的片段連接配接到一個活動時,監聽器配置設定和使用活動在的onattach()方法通過執行個體驗證。當使用者點選listview中的一個項目,監聽器被觸發調用onlistitemselected() ,我們已經實作了在活動類。狀态儲存和恢複。

這裡一個有趣的方面是savedinstancestate onactivitycreated()方法的使用。從表面上看,這看起來隻是儲存該項目正在檢視和恢複,。當方向發生變化,執行個體資料儲存,這部分代碼被觸發。如果方向從兩個片段視圖切換到單一片段視圖,活性保持不變,這是活性,将隻顯示清單。但是,一旦觸發此代碼的意圖,最終推出的浏覽器活動被觸發。是以,當你從風景到人像(在本例中)旋轉的觀衆活動。按傳回鍵的使用者傳回到清單中。讓我們談論的觀衆活動。

我們啟動檢視器活動,當觀看者的片段中沒有定義的目前活動。本次活動還必須了解觀衆的片段,它可能需要的任何配置。正如你看到的上面的代碼清單,這個資訊被發送到其他活動,使用的意圖額外的參數傳遞。然後,此資訊傳遞到片段在用同樣的方式。下面是完整的代碼的浏覽器活動,在自己的螢幕上顯示的片段:

正如你所看到的,它隻是一種方式來顯示的觀衆片段。一個有趣的方面是,如果它的oncreate()方法被調用時,該裝置已切換為橫向模式,它完成後,将使用者傳回到上一個螢幕。隻有當它被用于對景觀的螢幕,這種方法效果很好。如果您選擇使用它的在其他螢幕方向配置,這是必須更新以比對。對于本示例,建立方向之間的平滑過渡。

觀衆片段是非常簡單的。膨脹一個布局資源,并傳回一個view對象作為oncreateview()方法被調用的結果。然後,它有一個執行的update()方法,你已經看到了幾次。這是所有有給它。您可以檢視線上代碼庫中的代碼。

現在,當使用者從縱向模式旋轉為橫向模式,螢幕切換螢幕(活動)模式下的雙片段模式從單一的片段。您可以添加更多的替代布局,以更好地控制一下不同類型的螢幕上。例如,您可能隻需要兩個片段的布局時,大螢幕平闆電腦。而不是把替代布局資源/布局土地目錄,你可以把它的/布局的xlarge土地目錄。這是一個情況下,你需要更新的浏覽器活動,完不成隻是當螢幕方向改變。

在這裡,我們看到的景觀視野:

Android 建構使用者界面與Android的碎片

如果你改變方向的景觀,你會看到相同的圖像:

Android 建構使用者界面與Android的碎片

按傳回按鈕,傳回到清單視圖中:

Android 建構使用者界面與Android的碎片

結論

片段api,在android 3.0推出,是一個偉大的api用于建立靈活,動态的使用者界面。你已經學會了如何快速建立一個動态的使用者界面,可以步行通過整個應用程式的外觀和行為不同的螢幕方向和螢幕尺寸的片。因為這個功能是通過一個相容庫,任何應用程式為目标的a​​ndr​​oid 1.6及以後可以從這些改進中獲益,以靈活的使用者界面。這是一個簡要的介紹片段api,其中有許多更有趣的功能,如過渡,後退堆棧,對話片段,以及更多。當目标的andr​​oid 3.0及更高版本,有更多的功能的相容性庫中沒有找到。

繼續閱讀