2012-12-19 43 views
3

對於一個應用程序,我想從上到下設計佈局:從全屏尺寸開始,將屏幕尺寸分割成網格,並將控件放置在此網格中的固定位置等等。成爲適合幾乎所有屏幕尺寸的應用程序的最簡單方法。理想情況下,我也想要擴展其他的東西:角落環境,字體大小等。自上而下佈局

到目前爲止,我的印象是Android不想支持這種方法:有幾種縮放幾乎所有東西的機制,但它變得非常快: LinearLayout和TableLayout支持權重,所以我可以很好地使用這些權重,但是如果我想要利用屏幕大小進行縮放的邊距,我需要大量的嵌套佈局。 這有一些設計理由嗎? 實現與AbsoluteLayout類似的佈局應該非常簡單,但是將所有內容都基於可用屏幕大小的一部分,但不存在這樣的事情。

爲什麼不呢?爲什麼不想要這樣的事情,還是沒有人願意實施它?

回答

1

對於與屏幕尺寸成比例的佈局,請勿使用像素來指定尺寸。改用「dp」單位(或dip)。這個單元是密度獨立的,所以當你的佈局完美地適應模擬器的屏幕尺寸時,Android會照顧到你的擴展,它可以用於像廉價手機(320x240像素)一樣小的屏幕, 10" 平板電腦你當然需要提供在不同分辨率的圖像,因爲圖像縮放總是變得很糟糕很快

從官方Android開發者網站:

定義佈局尺寸與像素是一個問題因爲不同的屏幕具有不同的像素密度,所以相同數量的像素可能對應於不同設備上的不同物理尺寸,因此,在指定尺寸時,請始終使用dp或sp單位。一個與密度無關的像素,對應於160 dpi下像素的物理尺寸。 sp是相同的基本單位,但是會根據用戶的首選文字大小(它是一個與比例無關的像素)進行縮放,所以在定義文字大小(但決不是佈局大小)時應該使用此測量單位。

在同一個頁面上展示他們如何爲不同的屏幕密度提供的圖像:

http://developer.android.com/training/multiscreen/screendensities.html

+0

如果我理解正確的文檔= 1DP 1/160英寸或類似的東西。即,它是尺寸的絕對測量值。這可以像素密度正確縮放,但不會隨着屏幕尺寸縮放,還是它?我正在考慮將文本大小設置爲屏幕總高度的5%。我意識到,這將在小型設備上生成非常小的字體,但在我看來,這種方法在單一佈局的情況下會產生對各種屏幕尺寸有用的內容。 – user1917051

+0

我不確定1dp = 1/160in是否正確,但我確實不太瞭解這部分。我所知道的是,每臺設備的屏幕密度都不相同,這意味着便宜的手機密度會更小,例如160ppi,而更高端的設備屏幕密度會更高,如S3,其擁有306ppi。對於開發,我建議您使用默認的480x320dp屏幕尺寸,並相應地縮放您的位圖。 –