android适配

来源:互联网 发布:飞鱼网络电视1.3.8 编辑:程序博客网 时间:2024/06/05 17:15
图片通常用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;
0 0