34

如何为 Nexus 6 准备资源?如果我将图像放入 xxxhdpi,它们会按比例缩小并降低质量。我将图像放入 xxhdpi,它们会按比例放大并降低质量。如果实际密度 493ppi 更接近 xxhdpi ~480dpi,为什么开发人员决定为密度设置值 560dpi?

Nexus 6 拥有令人印象深刻的 5.96 英寸 Quad HD 屏幕,分辨率为 2560 x 1440 (493 ppi)。这转换为 ~ 730 x 410 dp(与密度无关的像素)。

Nexus 6 的量化密度为 560 dpi,位于 xxhdpi 和 xxxhdpi 主要密度桶之间。

对于 Nexus 6,该平台将缩减 xxxhdpi 资产,但如果这些资产不可用,那么它将扩大 xxhdpi 资产。

xxhdpi ~480dpi
xxxhdpi ~640dpi
4

3 回答 3

7

对于 Nexus 6,制造商选择了 560 的量化密度(adb shell getprop ro.sf.lcd_density),尽管物理密度约为 493(getResources().getDisplayMetrics().toString())。要了解他们为什么会这样做,需要了解量化密度的含义以及它如何影响图像资源渲染,此处对此进行了解释。

简而言之,560 的量化密度意味着用于加载/渲染图像的比例因子将是 3.5。用 D. Hackborn 的话来说,“密度……是设备制造商认为对其 UI 运行有意义的抽象密度桶。 ” 这是用于评估诸如“dp”单位以及从资源中选择和缩放位图之类的东西。

于 2015-05-04T23:30:11.910 回答
7

您可以使用drawable-560dpi560 dpi。drawable-560dpi并且drawable-xxxhdpi图像具有相同的分辨率。

于 2016-10-06T06:55:27.293 回答
2

我认为这是一个有效的问题。有些设备在支持的 dpi(xxhdpi & xxxhdpi)之间,使用图像会做不必要的软件缩放。我不关心质量差异,但它会影响应用程序的启动性能。检查BitmapFatory中的变量 willscale ,如果这是真的,平台将进行不必要的额外软件缩放。理想情况下,硬件 ui 应该使用 openGL ES 直接扩展它。

于 2015-11-03T15:21:43.383 回答