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