我希望只編寫一次佈局和代碼,以便在所有設備上看起來都不錯。 我已經嘗試了很多方法(是的,包括谷歌建議的,使用DP和添加多個佈局文件),但沒有真正解決每次有新的設備隨機應對新情況的問題分辨率和密度。 DP使用僅僅是一個XML技巧,可以使尺寸在所有屏幕上保持不變(例如,在所有屏幕上保持1cm的尺寸),所以它實際上不是解決方案。如何處理android屏幕碎片?
我也用權重和和代碼的技巧來設置正確的大小和位置,但它只是這樣一個簡單的任務太多的工作。
我聽說,谷歌正在爲這個問題的新的冰淇淋三明治版本的解決方案以及分片的版本,但我沒有聽到/讀任何新的東西這件事情。 不僅如此,多種密度的圖表&決議,該機器人需要支持是越來越大: http://developer.android.com/guide/practices/screens_support.html
這是一個恥辱,許多其他的技術已經有這個問題的解決方案:蘋果有它(自動將應用程序從iphone 3g縮放到iphone 4),adobe擁有它(閃光燈),甚至微軟擁有它(使用viewbox,Silverlight,WPF和WP)。即使電視也必須處理這個問題,而且他們做得很好。
我不要求魔法,只是一個方式來擴展一切。如果視圖是屏幕的W%,H%的大小,並且位於屏幕的X%,Y%的位置,則它應該在所有屏幕上保持這種方式,並且如果重要的話,也允許我們保持寬高比足夠我們。 爲什麼我們需要打擾解決方案和密度?這只是讓我們和圖形團隊感到困惑。
所以在最後,我認爲並希望很多人認爲我一樣,也許有人打了一個漂亮的SDK,解決了這一切?
@chubbard:DP不能正常工作,因爲它可以讓所有的屏幕都像標尺一樣保持完全一樣。如果在屏幕的3/4處出現了某種情況,它將不會在另一個屏幕上出現(它可能甚至在屏幕之外或者出現其他奇怪的事情,具體取決於您選擇的佈局)。 DP是一個固定值,僅根據密度將其轉換爲每個設備上的像素。所以,對於wvga800(hdpi-480x800)和wvga854(hdpi-480x854)之間的區別,DP不會改變任何東西,並且你得到54個像素,你不知道如何處理它們。如果你想爲wvga854放置一些東西,它不會顯示wvga800。更糟糕的是,在討論Android佈局時,這兩個屏幕之間沒有區別 - 它們都位於normal-hdpi的相同類別下。
還,如果使用DP,一個屏幕上的圖像/按鈕看起來不錯,但在其他屏幕它們看起來如此渺小相比,屏幕的其餘部分,所以它真的不能得到很好的解決。 我也不明白爲什麼我們有多個可繪製的文件夾通常設置爲取決於密度。它只會讓圖形團隊做更多的工作,並使應用程序的體積比它大得多,正因爲如此,市場可能不會接受它(因爲尺寸太大),甚至更糟 - 設備不會能夠下載應用程序(例如,Galaxy S上的舊操作系統版本無法下載尺寸大於30MB的安裝應用程序&)。
@adamp:我沒有說什麼absoluteLayout。它具有我想要克服其他佈局的確切不良行爲。唯一允許縮放的佈局是linearLayout(使用權重),但需要很多標籤和文字才能完成簡單的任務。 關於我想要什麼,我已經寫道:我希望一切都會擴展。在互聯網上有大量的例子,你可以看到它的工作正常,即使在閃存。只需打開一個完整的窗口flash/silverlight內容並調整窗口大小。如果程序員設置正確,那麼它的所有內容都將按照與原始大小相比的新大小進行縮放。 順便說一句,謝謝你的網格佈局的說明。我不知道。然而,它似乎也不能擴展任何東西。
@andreasg:現在這很有趣。你是如何處理圖像的?你可以試試下一個「謎語」嗎? 假設你有一張適合屏幕(並保持其長寬比)的人臉(或android :)的圖像),並且你有另一張以不同顏色着色的眼睛圖像,你會如何將它們放置一個(可能使用framelayout),以便在所有設備上看起來相同(縮放),無論您處於橫向還是縱向模式?
我無法連接你的推理,爲什麼dp不是解決方案。你能描述一個使用dp沒有產生預期結果的具體情況嗎? – chubbsondubs