像素实例

px = dp * density / 160

公式中density表示屏幕密度,又名dpi(dots per inch)或者ppi(pixls per inch),

dpi和ppi这两个是密度单位,不是度量单位,而这两个恰恰是我们换算中重要的分母。简单理解一下:

  • ppi (pixels per inch):图像分辨率 (在图像中,每英寸所包含的像素数目)
  • dpi (dots per inch): 打印分辨率 (每英寸所能打印的点数,即打印精度)

ppi:我相信大家都应该经常看到,比如去中关村在线就会发现手机的众多参数中就有如此一条,比如小米4的441ppi(1920x1080像素,5英寸),还比如iPhone6的326ppi4.7英寸1334x750像素),那么这个ppi是怎么算出来的呢?公式如下:

PPI = √(长度像素数² + 宽度像素数²) / 屏幕对角线英寸数

1920*1920+1080*1080/5=441, 1334*1334+750*750/4.7=326,就是这样算出来的。

设备一:480*320  4

√480*480+320*320/4=144,在此设备中,一个像素的长度为1/144,如果把一个控件的长度设为1px的话,那就相当于1/144寸。

 

设备二:960*640   4

√960*960+640*640+/4 = 288,在此设备中,一个像素的长度为1/288,如果把一个控件的长度设为1px的话,那就相当于1/288寸。

 

把两者进行对比会发现,我把我的app运行在第二种设备上的时候,发现尺寸缩水了,只有第一种设备的一半的长度了。怎么办?有什么解决办法吗?用google推荐的单位dp试试,把控件长度设为1dp,而不是1px

由公式px = dp * density / 160,在设备一中,其density =144,通过次公式算出长度为1*144/1600.9px,同时在设备一中,1px等于1/144寸,所以此控件的物理长度为0.9*1/1440.00625寸。

 

在设备二中,通过公式px = dp * density / 160,其density =288,算出长度为1*288/1601.8px,但是在设备二中,1px等于1/288寸,所以此控件的物理长度为1.8px*1/288寸,也是0.00625寸,由此可见,1dp在设备一和设备二上看起来的长度是一样的。是的,实际上就是这样的,dp是与设备无关的,1dp=1/72inch(好像是这么多)


ps:

对于一张200x200像素的图片,如果我们想要显示在 200ppi 的手机上,那么占用屏幕的长和宽均为   200pix  /  (200pix / inch) = 1 inch  ,也就是说要占用 1 inch x 1 inch,如果要显示在 300ppi 的手机上,那么占用屏幕的长和宽均为  200pix  / (300pix / inch )  = 2/3 inch,也就是说对于 ppi越高的手机,单位inch上能够显示更多的像素点,因此当这两种手机显示同样多的像素点的时候,ppi 越高的手机同一张图片看起来就越小。这就是我们想要图片在各种手机屏幕上都显示一致的效果时需要解决的问题。即屏幕适配问题。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值