图片通常用px(像素表示)
android的设备比较多样,有不同的分辨率,大小,
同样是40px的图片
在40dpi(40像素每英寸)的设备上只有1英寸,在20dpi(20像素每英寸)的设备上却有两英寸
这样同一张图片在不同的设备上显示的大小不一致
为了确保同一张图片在不同的设备上显示大小一致,官方提供了dp单位
px = dp *(dpi /160)
这里先说明一下dpi的计算方法,比如2048像素*1536像素 7.9英寸的屏幕 dpi = (2048平方 + 1536平方)开根号再除以7.9
附上图表
屏幕的长宽像素的数目及英寸是固定的,所以每个屏幕的dpi都是固定的,dp在160的时候为1,根据上表,不同的密度得到不同的系数,如240时是1.5, 320的时候是2
由px = dp *(dpi /160)公式可得 在160dp时是1px,在240时是1.5px
这样一张图片如果单位为dp,它在不同分辨率的屏幕上会显示为不同的px,但长度都保持一致
1.所以写代码时最好采用dp作为单位,并针对不同的屏幕大小提供不同的布局
2.对于图片,尽量采用9png,它可以按要求自动拉伸而不变形
3.采用RelativeLayout处理个组件间的相对关系
我们可以通过以下代码获得屏幕的密度,宽高像素
DisplayMetrics dm = new DisplayMetrics(); dm = getResources().getDisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int width = dm.widthPixels; int height = dm.heightPixels; float density = dm.density; float xdpi = dm.xdpi; float ydpi = dm.ydpi;