當(dāng)在Android UI上指定元素的大小時,您應(yīng)該知道以下測量單位:
dp是密度獨立的像素。 1 dp等于160dpi上的一個像素 屏幕。 這是指定時的推薦測量單位 視圖的維度。 160dpi屏幕是基線密度 假設(shè)由Android。 在引用a時,可以指定“dp"或“dip" 密度無關(guān)像素。
sp是與scale無關(guān)的像素。這類似于dp,建議用于指定字體大小。
點 - 點。 基于物理屏幕大小,點被定義為1/72英寸。
px - 像素。 對應(yīng)于屏幕上的實際像素。 使用本機不是 推薦,因為您的UI可能無法正確顯示在不同的設(shè)備上 屏幕分辨率。
將dp轉(zhuǎn)換為px(像素)的公式如下:
pixels = dp * (dpi / 160)
其中dpi為120,160,240或320。
如果在235 dpi屏幕上的按鈕,其實際寬度為
160 * (240/160) = 240 px.
當(dāng)在作為160dpi設(shè)備的180dpi模擬器上運行時,其實際像素現(xiàn)在是160 *(160/160)= 160像素。
在這種情況下,一個dp等于一個px。
您可以使用View對象的getWidth()方法獲取其寬度(以像素為單位):
public void onClick(View view) { Toast.makeText (this,String.valueOf(view.getWidth()),Toast.LENGTH_LONG).show(); }
Android定義和識別四個屏幕密度:
Nexus S的屏幕有4英寸屏幕對角線,屏幕寬度為2.04英寸。
其分辨率為480(寬)800(高)像素。 與480像素蔓延寬度為2.04英寸,結(jié)果是像素密度為約235每英寸點數(shù)(dpi)。
Nexus S被認(rèn)為是hdpi設(shè)備,因為其像素密度最接近240dpi。
使用dp單元確保您的視圖總是以正確的比例顯示,而不管屏幕密度。
更多建議: