dp:就是dip(device independent pixels)設(shè)備獨(dú)立像素杨凑,與密度無關(guān)的像素南蓬。一種基于屏幕密度的抽象單位卸夕。在每英寸160點(diǎn)(屏幕密度為160)的顯示器上怔匣,1dp=1px简烘;
sp:與刻度無關(guān)的像素。主要用于定義字體的大小甩恼,而從來不再layout上使用蟀瞧。與dp相似,但是可以根據(jù)用戶的字體大小首選項(xiàng)進(jìn)行縮放条摸,即sp除了與密度無關(guān)外悦污,還與scale(縮放)無關(guān)。當(dāng)屏幕密度為160時(shí)钉蒲,1dp=1sp=1px切端;
px:屏幕的實(shí)際像素。一般不用它作為單位子巾,因?yàn)樗鼤?huì)在不同的設(shè)備顯示相同的效果帆赢。
in:英寸小压。
mm:毫米线梗。
pt:磅。1/72英寸怠益。
dp和sp能夠自動(dòng)的隨屏幕的變化而變化仪搔。因此,為了使用戶界面能夠在現(xiàn)在和將來的顯示器類型上正常的顯示蜻牢,建議始終使用sp作為文字大小的單位烤咧,將dp作為其他元素的單位。
px和dp相互轉(zhuǎn)換代碼:
package com.hujl.util;
import android.content.Context;
public class DensityUtil {
/**
* 根據(jù)手機(jī)的分辨率從 dp 的單位 轉(zhuǎn)成為 px(像素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}
/**
* 根據(jù)手機(jī)的分辨率從 px(像素) 的單位 轉(zhuǎn)成為 dp
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}
}