屏幕适配 - zhpanvip/AndroidNote Wiki

屏幕适配相关参数

1.dpi的计算公式

dpi计算公式

dpi计算公式

2.density

density表示1dp有多少像素,它的计算公式如下:

density = dpi / 160;

3.dp与px的关系

根据density的含义可以得出px的计算方式:

px = dp * density;

今日头条屏幕适配方案原理

今日头条适配方案默认项目中只能以宽作为基准,进行适配。我们根据density的计算公式,以设计稿的宽度作为标准,可得出如下公式:

设计图总宽度(单位为 dp) = 当前设备屏幕总宽度(单位为像素)/ density

上述公式中因为设计稿的宽度是不变的,当前设备屏幕总宽度也是无法改变的,因此只能通过修改density的值来使得等式两边相等。那么可以得出以下公式:

density = 当前设备屏幕总宽度(单位为像素)/ 设计图总宽度(单位为 dp)

在求得density的之后,通过代码来修改系统的density值即可完成适配。

为什么使用dp无法适配所有屏幕?

举个例子 一个5英寸的手机,分辨率为10801920,根据公式计算出dpi为440,density为2.75,因此这款手机的宽度为1080/2.75=392.73dp 一个5英寸的手机,分辨率为1280720 ,根据公式计算出dpi为293,density为4.3 ,因此这款手机的宽度为1280/4.3 = 297dp 因此,如果在第二款手机上设置宽度为297dp,刚好充满屏幕,而如果在第一款手机上则无法充满屏幕。因此可以看出dp并不能适配所有屏幕。