我已经得到了这样的设备密度:
val wm = getSystemService(Context.WINDOW_SERVICE) as WindowManager
val display = wm.defaultDisplay
val metrics = DisplayMetrics()
display.getMetrics(metrics)
val density = metrics.densityDpi然后,我根据density和常量的值建立了一些逻辑:
DENSITY_XHIGHDENSITY_XXHIGH我预计S10会降到DENSITY_XXHIGH下面,但很明显,它的density值是420,而S9的密度是480。
这是否意味着ImageView实际上在使用来自xhdpi而不是xxhdpi文件夹的资源?如果这个值不可靠,那么在将int加载到ImageView之前,应该根据逻辑选择哪些值来选择最佳图像大小?
发布于 2020-01-14 10:23:31
如果您想知道使用了什么,我建议创建一个"whoami“字符串,并将其放在values-xhdpi和所有其他*dpi变体中。
值-xhdpi/whoami.xml
<resources>
<string name="density_bucket" translatable="false">xhdpi</string>
</resources>如果使用该值,您就知道Android系统在运行时选择了什么。
由于这是一个很好的方式“调试”您的问题到一个特定的设备,您也可以采用这一点。在我的示例中,此值用于从资产后端请求正确的图像大小。
https://stackoverflow.com/questions/59731723
复制相似问题