density表示1dp有多少像素,它的计算公式如下:
density = dpi / 160;
根据density的含义可以得出px的计算方式:
px = dp * density;
今日头条适配方案默认项目中只能以宽作为基准,进行适配。我们根据density的计算公式,以设计稿的宽度作为标准,可得出如下公式:
设计图总宽度(单位为 dp) = 当前设备屏幕总宽度(单位为像素)/ density
上述公式中因为设计稿的宽度是不变的,当前设备屏幕总宽度也是无法改变的,因此只能通过修改density的值来使得等式两边相等。那么可以得出以下公式:
density = 当前设备屏幕总宽度(单位为像素)/ 设计图总宽度(单位为 dp)
在求得density的之后,通过代码来修改系统的density值即可完成适配。
举个例子 一个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并不能适配所有屏幕。