dip,dp, px, sp, dpi, width, height的解释及用法
width 屏幕水平方向能摆放的像素点数,称为分辨率(width*height)
height 屏幕垂直方向能摆放的像素点数,称为分辨率(width*height)
dip/dp (device independent pixels) 设备独立像素,与屏幕设备无关; 谷歌引用的一个单位,用于适应不同分辨率的终端设备;
px(pixels) 像素,屏幕的实际像素点单位;
sp(scaled pixels) 一般用于字体
dpi(dot per inch) 每一英寸的点数
手机上默认的正常的dpi为160,电脑的一般为96dpi,即一英寸里有160个点;若设备屏幕的固定物理尺寸为3.5,而屏幕分辨率越大,则dpi越高;
dpi = width/物理宽(height/物理高)
density = dpi/160 (见DisplayMetrics.java里的 density = DENSITY_DEVICE / (float) DENSITY_DEFAULT;)
dip/dp与px的换算公式: px = dip * density
手机默认的dpi为160,如果想设置其他的dpi,可以通过设置配置文件改变的dpi值:
可在源码的build\tools\buildinfo.sh中加入echo "ro.sf.lcd_density=你想设置的值(如200)"
或者设置qemu.sf.lcd_density的值,都可改变dpi
系统会根据DisplayMetrics.java里的getDeviceDensity来获取dpi的值;
应用工程中的xdpi, hdpi,mdpi,ldpi对应的就是DisplayMetrics.java里的DENSITY_XHIGH = 320, DENSITY_HIGH=240, DENSITY_MEDIUM=160,DENSITY_LOW=120