gpt4 book ai didi

android - 量化密度如何影响图像资源选择和缩放?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:08:41 25 4
gpt4 key购买 nike

每个 Android 设备都有一个物理像素密度和一个“量化密度”。 Sources声明量化密度是用于确定在运行时如何选择和缩放可绘制 dpi 图像的密度。

问题:这些图像是如何 (1) 选择和 (2) 缩放的?

例如,放入 drawable-xhdpi 存储桶中的 64x64 图像会缩放到多大?

最佳答案

对于问题的缩放部分,首先通过运行获取设备的量化密度

adb shell getprop ro.sf.lcd_density

并将其称为设备的量化密度。通常,此量化密度不同于设备的物理密度,但如果物理密度完全落在 dpi“桶”边界之一,则它可以相同。物理密度描述的是真实世界的测量值,而量化密度由设备制造商设置,通常选择以下值之一:

  • 160
  • 240
  • 320
  • 480

量化密度控制着我所说的设备图像缩放因子 (ISF)。公式如下:

ISF = ro.sf.lcd_density / 160

ISF 是当 Android 的资源加载/布局管理器从文件中读取资源位图并将其渲染到屏幕时使用的比例因子(我不知道缩放是在加载时发生还是在渲染时发生-时间)。在 Nexus 6 设备上,ISF 为 3.5,因为量化密度设置为 560(并且 560/160 = 3.5)。可以肯定的是,运行时的渲染大小也是包含相关文件的可绘制桶的函数。例如,在 Nexus 6 上:

  • mdpi 文件夹中的 64 像素图像呈现为 224 像素(因为 3.5*64/1.0 = 224)
  • hdpi 文件夹中的 64 像素图像呈现为 149 像素(因为 3.5*64/1.5 = 149)
  • xhdpi 文件夹中的 64 像素图像呈现为 112 像素(因为 3.5*64/2.0 = 112)
  • xxhdpi 文件夹中的 64 像素图像呈现为 75 像素(因为 3.5*64/3.0 = 75)
  • xxxhdpi 文件夹中的 64 像素图像呈现为 56 像素(因为 3.5*64/4.0 = 56)

顺便说一句,量化密度还定义了您在布局文件中指定的 dp 的物理大小。其公式为:

+=======================+
| Dq |
| 1dp = ----- px |
| 160 |
+=======================+

其中 Dq 是量化密度。例如,

  • 在 Dq 为 160 的设备上,1dp = 1px
  • 在 Dq 为 240 的设备上,1dp = 1.5px
  • 在 Dq 为 320 的设备上,1dp = 2px

关于android - 量化密度如何影响图像资源选择和缩放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30041594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com