Android 屏幕适配详解

屏幕适配相关参数

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并不能适配所有屏幕。

教程来源于Github,感谢zhpanvip大佬的无私奉献,致敬!

技术教程推荐

朱赟的技术管理课 -〔朱赟〕

如何设计一个秒杀系统 -〔许令波〕

玩转Spring全家桶 -〔丁雪丰〕

Python核心技术与实战 -〔景霄〕

Java性能调优实战 -〔刘超〕

黄勇的OKR实战笔记 -〔黄勇〕

Electron开发实战 -〔邓耀龙〕

正则表达式入门课 -〔涂伟忠〕

成为AI产品经理 -〔刘海丰〕