sp:一般用于设置字体大小,最重要的特点是与屏幕密度无关,与scale无关。
dip:等同于dp,通常用于设置控件长度和宽度,最重要特点也是与屏幕密度无关。
px:像素,多用于设置宽度和长;pt:磅,多用于设置字体大小。
分辨率:整个屏是多少点,比如800x480,它是对于软件来说的显示单位,以px为单位的点。
density(密度)值表示每英寸有多少个显示点,与分辨率是两个概念。
apk的资源包中,
当屏幕density=240时使用hdpi标签的资源
当屏幕density=160时,使用mdpi标签的资源
当屏幕density=120时,使用ldpi标签的资源。
一般android设置长度和宽度多用dip,设置字体大小多用sp.
在屏幕密度为160,1dp=1px=1dip, 1pt = 160/72 sp 1pt = 1/72 英寸.当屏幕密度为240时,1dp=1dip=1.5px.
另外补充
获取屏幕硬件分辨率方法:
其中dm.withPixels和dm.heightPixels得到的宽度和高度值都是以宽度为320为标准的,也就是说,不管你的屏幕是什么分辨率,宽度都会得到320,而高度就根据比例宽高比例计算,所以在我的Milestone上(480X854)得到的宽高为320X569,如果要得到真实的分辨率,就必须乘以dm.density,这个值是因硬件分辨率而异的,如果是屏幕硬件宽为320像素,那么这个值就是1,如果是480,这个值就是480/320,就是1.5。