2010-12-23 29 views
6

如果在佈局xml文件中將尺寸設置爲例如12dip。那在mdpi中總是是12px,所以在hdpi中是18px?dip,px和dpi之間的關係

那麼dip對mdpi總是正確的,並且會根據其他密度進行相應的縮放?

回答

11

該問題完全覆蓋official documentation。 dip,px和dpi之間的關係覆蓋了this部分。

引用:

密度獨立像素(DP)

應用程序可以在定義他們的 UI使用,以表達佈局尺寸或 位置的密度無關的方式

的虛擬像素單元。

密度無關的像素相當於一個 160 dpi屏幕上的一個物理象素,由所述平臺(如本文檔中描述 以後)假定基線密度 。在運行時, 平臺透明地處理任何 縮放所需的DP單位,在屏幕的 使用的實際密度基於 。將dp單位轉換爲 屏幕像素很簡單:像素= dps *(密度/ 160)。例如,在240 dpi屏幕上,1 dp將等於1.5物理像素數。使用DP單位 定義應用程序的UI強烈推薦 ,以此確保對不同 屏幕 UI的正確顯示的方式。

所以聲明:

總是在MDPI在華電國際

被12像素等18像素似乎是正確的,根據文檔。

+0

據我所知,如果屏幕是160dip,12px在mdpi中只有12px。 mdpi是一個廣泛的中等分辨率設備。 – CodyBugstein 2014-10-03 07:00:15

4

對於密度爲160 dpi的設備,12dp將爲12px。該文檔並沒有說所有的mdpi設備都有160 dpi的分辨率,所以看起來您可能會發現其他密度(例如150或180 dpi)的mdpi設備。在這些情況下,關係1dp = 1px不會成立。

你才能確定這種關係:

px = dp * (dpi/160) 

如果一臺設備的320個dpi的密度則每個DP對應於2像素,因爲一百六十零分之三百二十零爲2。我要說的是2 「密度因子」,但它也是你用getResources().getDisplayMetrics().density得到的,所以它也被稱爲「密度」。