【问题标题】:Why Nexus 6 density is 560 dpi?为什么 Nexus 6 的密度是 560 dpi?
【发布时间】:2015-02-12 12:32:28
【问题描述】:

如何为 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

【问题讨论】:

  • “为什么开发者”这样的问题通常不适合 Stack Overflow。
  • I put images to xxxhdpi they will scale down and lose quality. I put images to xxhdpi they will scale up and lose quality. 当图像按比例缩小(中值近似)而不是放大(像素化)时,您会获得更好的质量。
  • 是否有一个选项可以为这款手机准确指定资源?类似于 drawable-560dp
  • 分辨率 1440 x 2560 像素(~493 ppi 像素密度)xxhdpi

标签: android dpi screen-density


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    您可以将drawable-560dpi 用于 560 dpi。 drawable-560dpidrawable-xxxhdpi 图像的分辨率相同。

    【讨论】:

    • Re "drawable-560dpi 和 drawable-xxxhdpi 图像的分辨率相同。"不,他们不是 - 问题的全部意义在于 560dpi 的分辨率介于 xxhdpi 和 xxxhdpi 之间。 xxxhdpi 是 640 dpi。如果设备将自己指定为 560dpi,例如 Nexus 6,会发生什么情况,他们首先会在 drawable-560dpi 中查找文件名。如果在那里找不到,他们会查看drawable-xxxhdpi。如果在那里找不到,他们会查看drawable-xxhdpi。然后将找到的图像缩放到显示矩形。
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-02
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 1970-01-01
      相关资源
      最近更新 更多