2014-01-08 111 views
1

我正在開發一個應用程序,該應用程序應該在第一頁上顯示許多貼圖。 Tiles是從json動態生成的,每個應該根據json中指定的大小自行分配,並且應該根據需要採用儘可能多的屏幕。每個圖塊表示信息的簡短摘要。要求是,當按下按鈕時,用戶被重定向到另一個頁面,該頁面提供更詳細的信息(如表單),其中包含整個頁面。然後用戶應該能夠返回到上一頁並根據需要選擇另一個磁貼或返回到第一個磁貼。我不知道會有多少瓦片,它們的組件是什麼,所以一切都是動態的。也可能需要在詳細視圖上繪製小瓷磚(使用不同的信息)。Android碎片或佈局 - 需要建議

目前,我在第一頁上顯示所有小方塊的舞臺上,我需要找到顯示詳細視圖並讓用戶輕鬆快捷地導航的最佳方式。由於組件內部的絕對定位,每個tile都會擴展RelativeLayout。我正在考慮將Layout從Layout切換到Fragments,因爲它們似乎提供了所需的靈活性,我搜索的許多文章和教程都參考了它們。在這種情況下,當用戶按下片段片段時,所有現有的片段將被替換爲所需的細節片段。按下後退按鈕可以將細節片段替換爲屏幕上以前的較小片段(是顯示全部還是隻顯示一個?)。

我正在考慮的另一個選擇是保留佈局,然後將用戶重定向到具有詳細視圖的單獨活動。在這種情況下,導航返回似乎正在破壞活動,並且如果用戶想要返回它,則需要重新繪製(重繪不可取)。

我的問題是什麼是更好的性能。每個圖塊以及詳細視圖都可能包含一些圖像,並且整個頁面需要一段時間才能加載。但是想想如何用Fragments以編程方式處理這個問題可能需要一段時間,我想找到的最後一件事就是Fragments不適合。也許你有其他想法描述的場景?任何好的教程/文章,其中碎片完全創建和管理(沒有XML)。 我對Android比較陌生,現在完全失去了。

編輯: 感謝大家的建議。在這一點上我不能選擇最好的答案。我現在必須做更多的研究和學習。稍後會做。

+0

「每個tile和detail view都可能有一些圖像,整個頁面需要一定的時間才能加載」 - 您可能會考慮優化它,比如緩存值 - 就像寫入sd卡的數據一樣。在Android上,您的活動(無論是否片段)可能隨時被破壞,您必須準備好再次快速顯示它。 – marcinj

+0

當然,這是需要考慮和完成的事情。但目前我正試圖解決另一個問題。 – etilia

回答

1

從上面描述的你不需要片段來做到這一點。在您的主頁上,您可以使用GridView來顯示您的圖塊。你可以創建另外兩個活動。一個叫做TileActivity的TileActivity會在每次按下一個貼圖時打開。然後,您可以創建一個PopulateActivity,該PopulateActivity將根據Tile按下的相關信息來填充TileActivity。在性能方面,而不是關閉TileActivity返回到主頁面,您可以使用Intent Flags,這樣TileActivity不會關閉,它只是添加到堆棧,然後重新啓動,而不是在每次調用時重新創建。

+0

我選擇了這個答案,因爲我設法實現了這個功能而不使用片段。我肯定會需要它們來製作一些自定義組件,但在這種情況下,我需要將詳細視圖中需要呈現的所需模型與每個圖塊關聯;當用戶按下這個圖塊時,我使用Parcealable模型,並可以將它與Intent一起發送到下一頁。 – etilia

+0

很高興能幫到你! – DMC

2

碎片應該是最好的方式。因爲動態地填充片段中的細節很容易。將幫助檢查我已編寫的一些代碼,可以解決這個問題

+0

因爲您在編碼方面提供了幫助而投票給您。 – Peter

2

片段是Android中用於創建GUI的新風格,不應將其與性能方面的簡單Activity + xml佈局進行比較。創建碎片是爲了更容易在手機和平​​板電腦上構建複雜的GUI。您可以使用這兩種方法創建低性能的GUI。

從您的描述我想最好創建兩個片段,並將它們連接到主細節模式。碩士將是您的簡短摘要的json列表,詳細信息將成爲您的附加數據片段。您仍然可以將這兩個片段分別放在不同的活動中,並顯示來自主控片段的詳細片段(主動態將隱藏起來) - 這對小屏幕設備很有意義。但是您可以在平板電腦的一個屏幕上顯示這兩個片段。參見「主要細節流程模板」,http://developer.android.com/tools/projects/templates.html

因此,碎片爲您提供了很大的靈活性來修改您的用戶界面,無需重寫大量代碼。

一些像ViewPager這樣的新小工具只能使用片段,所以如果你想使用它,你最好花時間學習它們。