2013-10-01 48 views
1

我是Android開發新手,我正在嘗試將我的應用程序改編爲各種分辨率。我最近聽說了傾向的概念,但我沒有得到這個單位的目的。我知道,無論屏幕分辨率如何,它都允許顯示具有相同物理尺寸的內容。使用dip的目的是什麼?

但事情是,它不適用於不同的屏幕密度。我的意思是,如果我定義寬度爲80dip的圖像,結果在160dpi屏幕和320dpi屏幕上將不會相同。因此,如果我每次都需要編寫代碼來將組件適配到設備,那麼我不會真正達到此設備的目的。

如何在xml中定義一個佈局(沒有任何代碼,它不應該是必需的:/),以便這個視圖在每個設備上都是相同的(或幾乎)?

我真的不明白爲什麼它不可能在佈局(xml)中使用百分比而不是那種單位。

非常感謝您的幫助。

PS:對不起,我的英語:(

回答

3

浸塗(也稱爲DP)的想法是具有相同大小的虛擬像素不管顯示器的物理像素密度的

1DP = 1個像素在160個像素/英寸(中密度顯示— MDPI)

在較高的像素密度,1DP是多於一個的物理像素和在較低的密度,它需要比1DP更要的大小一個物理cal像素。

如果您在px中指定了大小,那麼您指定的是物理像素,而在高密度設備上,相同的對象會變小。

圖像通常根據找到它們的資源文件夾進行縮放。如果您將.png文件放在/res/drawable中,則系統會假定其尺寸正確,因此顯示密度爲160像素/英寸。如果實際顯示爲240像素/英寸(hdpi),則在加載時系統會自動將圖像縮放1.5倍(= 240/160)。結果是圖像將在所有屏幕密度上以相同的物理尺寸顯示。

您可以使用密度特定的資源文件夾(/res/drawable-mdpi,/res/drawable-hdpi等)爲不同的密度提供不同的圖形;這通常在系統縮放不可接受地降低圖像質量時完成。您還可以將圖形放入/res/drawable-nodpi以抑制此縮放。

欲瞭解更多信息,請閱讀教程Supporting Different Densities