Skip to content

屏幕适配

zhpanvip edited this page Jun 5, 2021 · 5 revisions

屏幕适配相关参数

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

公众号:玩转安卓Dev

Java基础

面向对象与Java基础知识

Java集合框架

JVM

多线程与并发

设计模式

Kotlin

Android

Android基础知识

Android消息机制

Framework

View事件分发机制

Android屏幕刷新机制

View的绘制流程

Activity启动

性能优化

Jetpack&系统View

第三方框架实现原理

计算机网络

算法

其它

Clone this wiki locally