Android - UI适配

2024-02-17  本文已影响0人  超级呆

屏幕适配

尺寸概念解释
Dimensions - Google

android中的dp在渲染前会将dp转为px,计算公式:

 px = density * dp;
 density = dpi / 160;
=>
 px = dp * (dpi / 160);

宽高限定符适配

  1. 设定基准分辨率
  2. 计算不同分辨率下的dp
// 例如:
1. 基准分辨率宽度为375dp
2. 需要适配的分辨率宽度为1080dp
以基准分辨率的设计稿为1dp的长度时,1080分辨率的设备需要设置为1080/375=2.87dp

缺点

这个方案有一个致命的缺陷,那就是需要精准命中才能适配,比如1920x1080的手机就一定要找到1920x1080的限定符,否则就只能用统一的默认的dimens文件了。而使用默认的尺寸的话,UI就很可能变形,简单说,就是容错机制很差。

Note: The system chooses the resource that matches both in width and height. Therefore a resource that specifies both is strongly preferred over one that specifies only one or the other. For example, if the actual screen is 720 dp wide by 1280 dp high and one resource is qualified with w720dp and another is qualified as w700dp-h1200dp, the latter is chosen even though the former is an exact match for what it specifies.

Smallest-Width - SW限定符适配

原理和宽高限定符适配的方案是一致的

指的是Android会识别屏幕可用高度和宽度的最小尺寸的dp值(其实就是手机的宽度值),然后根据识别到的结果去资源文件中寻找对应限定符的文件夹下的资源文件。

优点

缺点

修改系统Density

默认px = density * dp,也就是屏幕总宽度dp = 屏幕宽度px / density
这个时候我们假设所有设备上的屏幕总宽度dp会等于我们设计图375dp,那么可以得出一个公式:

density = 屏幕宽度px / 设计图宽度(375dp)

通过系统api,将density赋值给系统,抛弃掉系统默认计算density的计算公式

优点

缺点

参考文章

上一篇下一篇

猜你喜欢

热点阅读