密度合格的可绘制文件夹或drawable-nodpi是否优先?

时间:2014-07-10 16:45:09

标签: android android-resources

如果我为density qualified folder(例如drawable-hdpi)定义了drawable,并且还在drawable-nodpi中定义了drawable,那么high density device会使用-hdpi -nodpi

如果我更进一步,并为-land文件夹设置相同的设置,那该怎么办?

4 个答案:

答案 0 :(得分:49)

我不确定nodpi的优先级是什么,但这绝不是问题。听起来你误解了nodpi限定词。您不应将nodpi用作设备密度桶中未提供的资产的后备。正确的后备是没有密度限定符的文件夹(例如drawable/)。

如果系统无法找到设备密度的资产(例如,它是ldpi设备,而您没有drawable-ldpi文件夹),它将回退到没有密度限定符的文件夹,* not nodpi限定符。

当您想要指定将用于所有密度并且您不希望Android扩展的资源时,会使用nodpi限定符。其他密度文件夹中的资产(例如drawable-xhdpi)将缩放到实际屏幕大小。如果您使用nodpi限定符,则不应在任何其他资源文件夹中提供该资源

同样重要的是要注意,对于屏幕密度限定符,Android还倾向于使用较低密度的资源而不是不合格的资源。如果您有xhdpi设备,但只有drawabledrawable-mdpi文件夹,则Android会在非限定文件夹之前检查mdpi文件夹中的资产。

答案 1 :(得分:9)

drawable-nodpi 将绕过缩放, drawable 将使用默认缩放:

  • mdpi = 1x
  • hdpi = 1.5x
  • xhdpi = 2x
  • xxhdpi = 3x
  • xxxhdpi = 4x

    如果您的代码将进行自己的扩展,那么

    drawable-nodpi 会很有效  (或没有缩放),你不希望Android预先缩放图像。

    还有 drawable-anydpi ,只是为了让事情更加混乱。

    如果不存在密度和屏幕规格的完全匹配,将使用没有规格的

    可绘制。在drawable之后将使用 drawable-nodpi

    更新如果您同时拥有drawable和drawble-nodpi,则选择顺序是更复杂的规则,未记录或Android已损坏。通过实验,我证实了屏幕密度<1的设备。 xhdpi将正确选择可绘制图像。屏幕密度> = xhdpi的设备将选择drawable-nodpi。

    选择规则: 1.选择匹配屏幕密度,其中之一:

    • drawable-ldpi
    • drawable-mdpi
    • drawable-hdpi
    • drawable-xhdpi
    • drawable-xxhdpi
    • drawable-xxxhdpi
    1. 如果密度不匹配,请选择其中一个
      • drawable(自动缩放mdpi = none ... xxxhdpi = 4x)
      • drawable-nodpi(无缩放)
      • drawable-tvdpi
      • drawable-anydpi(无缩放)
  • 答案 2 :(得分:8)

    取决于。

    首先,nodpi不是后备文件夹。如果您有hdpi设备,系统将首先查找hdpi文件夹。 nodpi文件夹包含无意缩放的资源。

    drawable/可用作后备文件夹,以防设备密度特定资源不存在。

    然后,如果我们查看屏幕像素密度(dpi)的可能限定符值,则列为:

    1. LDPI
    2. MDPI
    3. HDPI
    4. xhdpi
    5. xxhdpi
    6. xxxhdpi
    7. nodpi (非扩展资源请点击此处)
    8. tvdpi
    9. anydpi (此文件夹中的资源优先级最高)
    10. nnndpi
    11. 注意:您应该将所有这些资源放在希望缩放drawable-nodpi文件夹中。要支持多个屏幕,Android prefers to scale down a larger original image instead of scaling up a smaller original image。这些资源应该出现在任何其他 drawable-qualifier 文件夹中,否则这些资源可能会被缩放到哪种方式会破坏整个目的。

      还必须注意:

        

      使用密度限定符并不意味着资源仅适用于该密度的屏幕。如果您不提供具有更好地匹配当前设备配置的限定符的备用资源,则系统可以使用最匹配的任何资源。

      以下是系统用于查找最佳匹配资源选择流程图

      enter image description here

    答案 3 :(得分:3)

    当不需要缩放图像/资产时,使用drawable-nodpi限定符。

    其他密度文件夹中的Drawable(例如drawable-xhdpi)将缩放到实际的屏幕尺寸。

    drawable-nodpi适用于所有密度设备的恒定尺寸。