每个Android设备都有物理像素密度和量化密度' Sources表示量化密度是用于确定如何在运行时选择和缩放drawable-dpi图像的密度。
问题:如何选择这些图像(1)和(2)缩放?
例如,放入drawable-xhdpi存储桶的64x64图像会缩放到什么尺寸?
答案 0 :(得分:10)
对于问题的缩放部分,首先通过运行
获取设备的量化密度adb shell getprop ro.sf.lcd_density
并将其称为设备的量化密度。通常,这种量子化密度不同于器件的物理密度,但如果物理密度完全落入dpi“桶”边界之一,它可以是相同的。物理密度描述了实际测量,而量化密度由设备制造商设置,通常选择为以下值之一:
量化密度控制我称之为设备的图像缩放因子(ISF)。公式如下:
ISF = ro.sf.lcd_density / 160
ISF是当Android的资源加载/布局管理器从文件读取资源位图并将其呈现到屏幕时使用的比例因子(我不知道在加载时是否发生缩放或渲染-时间)。在Nexus 6设备上,ISF为3.5,因为量化密度设置为560(和560/160 = 3.5)。可以肯定的是,运行时渲染的大小也是包含相关文件的可绘制存储桶的函数。例如,在Nexus 6上:
顺便提一下,量化密度还定义了您在布局文件中指定的dp的物理大小。其公式为:
+=======================+
| Dq |
| 1dp = ----- px |
| 160 |
+=======================+
其中Dq是量化密度。例如,