android适配

图片通常用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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值