16

如何處理Android活動與片段中的UI轉換有任何模式?我目前正在研究一個在Landscape中最多有3列的UI。 我希望用戶界面從屏幕上的1列開始,然後選擇第二列中的某些內容,然後點擊平板電腦和手機中第二次淡出的內容,然後淡出第一列手機上的列。 我想知道什麼時候我應該做一個活動轉換,以及何時應該使用帶有出現的視圖的碎片。據我已閱讀片段可以移動到其他活動,所以我的選擇要麼執行靜態列布局的活動,然後過渡採取片段與他們或有一個活動與所有3列,並有活動管理出現的片段。兩種方法都可以工作,但我從兩個解決方案的許多角度對利弊感興趣。使用活動轉換與動態片段的模式

類似的還有什麼,我問兩個問題,但不太回答我

回答

12

碎片可能看起來像更多的代碼(因爲你在一個片段中放置一個視圖,在一個Activity中放置一個片段,而不僅僅是一個Activity中的一個視圖),但是它們很棒頭痛在這種情況下 - 肯定會跟Fragments一起。他們甚至爲你處理過渡。

我們有一些名爲「Honeycomb Gallery」的示例代碼,您可以看看here,它具有兩列加操作欄佈局以及顯示/隱藏最左列的功能。這應該讓你在確定如何爲多個片段進行佈局並顯示/隱藏它們方面有一個良好的開端。僅供參考,在活動中使用多個片段(而不是多個活動)的一個重要折衷是片段不直接響應意圖 - 例如,如果您有一個筆記應用程序,其中「查看註釋」頁面是一個活動,並且您對其進行了更改,以便在主活動中存在「查看註釋」片段,那麼您必須對其進行設置,以便主活動收到註釋ID和註釋操作(創建,查看,編輯,等等),而不是僅僅讓「查看筆記」活動在意圖中收到筆記ID。然後主Activity將需要相應地在頁面上設置片段。這並不是一個大問題,但如果通過Intent對應用程序的各個部分進行外部訪問非常重要,那麼將應用程序分解爲幾個活動以及使用片段來表示各個組件可能會更容易。

+0

感謝亞歷山大這是一個很好的指針,我實際上已經忘記了那個示例應用程序。對我來說,關於Activites vs Fragments以及更多關於何時使用一個包含靜態片段的Activity以及何時動態加載片段的內容更少。 我認爲一個好的模式大綱是Intent機制。所以如果你想讓屏幕通過一個Intent被尋址,那麼把它放在它自己的Activity中。 你能想到其他模式嗎?冰淇淋三明治核心應用程序是否有良好的模式,可以用來研究如何最好地使用Fragments? – AGrunewald

+1

在最近的Honeycomb Android開發實驗室中,我們有一位開發人員說,他們會通過「gmail會做什麼」。雖然在您的應用中運行的內容總是最重要的,但它們提供了一個好處,即gmail應用程序(包括平板電腦和手機)對於片段的良好使用以及更新操作欄項目和可見片段基於上下文(即,操作欄項目根據您是閱讀電子郵件,編寫一個電子郵件還是瀏覽電子郵件列表而更改)。在Honeycomb,Youtube和Contacts中也很棒。每ICS,我不能談論細節:) –

+0

感謝偉大的更新亞歷山大。我期待ICS Open Source Drop能夠查看代碼。我知道許多Google Apps未包括在內,但我相信在開源樹中仍然有足夠的核心應用程序來學習很多東西。 – AGrunewald

1

基於The Android 3.0 Fragments API頁面上,活動是獨立而一個片段可以作爲一個迷你活動,它必須被託管在一個實際的活動中。

它繼續說,Fragment API的推出爲Android開發人員提供瞭解決開發人員碰到的很多痛苦點的機會,因此在Android 3.0中,Fragment的效用遠遠超出了爲不同屏幕調整:

我認爲對應用程序使用單個活動不一定是錯誤的決定,只是風格問題。這是你應該根據你想要完成的事情做出的決定。

然而,引入碎片被認爲是解決現實世界的問題。基於這一點,我會建議您編寫一些「概念驗證」代碼並評估結果。在這個時候,這可能是唯一的現實世界中的測試,將此事

+0

感謝諾亞評論,我同意你的意見,不幸的是,它不能回答我的問題,因爲我正在尋找模式。但似乎我們仍然在用碎片開創新局面。 – AGrunewald

1

全屏

使用片段使用活動

的部分是或者否屏幕(而不是服務)在我的主要應用,我想在應用程序的多個部分中保留水平滾動視圖中的屏幕選項卡。部分包括 新聞,照片,視頻,時間表等所有單用戶可對焦任務。

容納它的主要應用程序是一個應用程序,並且選項卡只是一個調用片段管理器的視圖。

但是,我使用活動來處理應用程序中更復雜的用戶活動。例如。如果有人播放視頻,請查看項目詳細信息頁面和照片庫/幻燈片部分,因爲它們都是全屏組件。

當過渡到全屏時,不需要顯示/隱藏片段,因爲活動堆棧可以快速輕鬆地處理您想要的任何操作,並且保持代碼最小化和乾淨。

所以我有活動 - >房屋碎片 - >啓動全屏活動的特殊命令。

+0

感謝您的答案HaMMeReD我已經知道這一點了:-)問題更多的是針對何時在活動之間切換以更改屏幕以及何時更改動態片段。 – AGrunewald

+0

每當它是全屏組件時使用活動。您可以在多個活動中重複使用片段。 – HaMMeReD

+0

實際上,在手機上製作全屏組件的原因是平板電腦上的部分屏幕組件,因此將「全屏」位置於碎片而非活動中仍然有意義。 –