簡體   English   中英

片段:如何組成最終的,取決於屏幕尺寸的應用程序布局?

[英]Fragments: How do I compose the final, screen size dependent, layout of my application?

編輯:

問題最終是關於是否存在事實上的標准或Google關於如何實施以下問題的建議。


起源:

最近,我開始仔細研究Android中的Fragments概念 我確實對此有想法(或者至少我認為是這樣),並且我也看到了對此的需求。 我很容易理解片段實現背后的技術。 但是,我似乎在理解上有問題,是如何組成應用程序的最終布局,以便它可以在大型平板電腦和小型智能手機上自動運行?

我有我的列表片段(例如MS Outlook-inbox-list)和詳細視圖片段(例如MS Outlook-email-preview)。 在平板電腦上,我自然希望在單個活動中顯示這兩個片段,但是在智能手機上,我希望在兩個不同的活動中顯示它們,而在單個活動中並不一定要同時容納兩個片段。

我該如何解決呢?

我是否必須在應用程序中實現三個活動(多合一平板電腦活動和兩個單獨的智能手機特定活動)? 但是,應用程序如何才能決定使用哪種實現(1或1 + 1)呢?

通常,我的活動扮演“控制器”的角色(根據MVC范例),但是,就上述問題而言,我將擁有三個控制器。 哪種構造將扮演根控制器的角色? 我是否應該編寫一個“主活動”(不帶UI),以編程方式嘗試確定其駐留在哪個設備上,然后相應地調用合適的片段活動? 但是之后; 如何以一種定義明確的方式找出我的應用程序在哪種類型的設備(平板電腦/手機)上運行?

我想我可以發布一些代碼,但是我認為這不會進一步澄清我的問題,因為它更多是體系結構選擇問題,而不是特定於實現的問題。


干杯,
數據庫

我是否必須在應用程序中實現三個活動(多合一平板電腦活動和兩個單獨的智能手機特定活動)?

不,可能只有兩個。 一個負責加載ListFragment ,如果有空間,則負責加載細節片段。 另一個僅加載詳細信息片段-如果用戶點擊列表條目並且第一個活動未顯示詳細信息片段,則第一個活動將由第一個活動啟動。

通常,我的活動扮演“控制器”的角色(根據MVC范例),但是,就上述問題而言,我將擁有三個控制器。

恕我直言,帶有片段的片段是您的控制者。 活動是業務流程層,用於確定哪些片段可見並處理跨片段事件。

但是之后; 如何以一種定義明確的方式找出我的應用程序在哪種類型的設備(平板電腦/手機)上運行?

在許多情況下,最簡單的解決方案是通過布局XML資源來驅動它。

例如,在我的上述建議中,第一個活動可能具有main.xml兩個不同版本。 一個( res/layout/main.xml )僅加載ListFragment 另一個(例如, res/layout-large-land/main.xml )加載ListFragment和詳細信息片段,或加載ListFragment和動態詳細信息片段的FrameLayout容器(您可以通過FragmentTransaction定義)。 活動本身通過確定第二個片段(或其FrameLayout “插槽”)是否存在於膨脹的main.xml來確定是管理兩個片段還是一個片段。 這樣,如果您將來更改布局規則(例如res/layout-sw600dp-land/main.xml ),則無需更改Java代碼。

也沒有什么可以阻止您使用ConfigurationDisplayMetrics嘗試在Java代碼中進行決策。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM