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

the*_*ang 14 android android-resources

如果我定义为一个可绘制density qualified folder(例如,绘制,华电国际),也可绘依傍的drawable-nodpi,将一个high density device使用-hdpi-nodpi

如果我更进一步,并为-land文件夹设置相同的设置呢?

Tan*_*.7x 52

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

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

nodpi当你想指定将用于资源限定符用于所有的密度和你不希望Android扩展.其他密度文件夹(例如drawable-xhdpi)中的资产将缩放到实际屏幕尺寸.如果使用nodpi限定符,则不应在任何其他资源文件夹中提供该资产.

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

  • 放入`drawable`的任何文件都将由系统以与'drawable-mdpi`相同的方式进行处理.所以它可能具有较低的优先级,但结果是相同的.我的建议是永远不要使用`drawable`,如果你计划使用`drawable`,只需把东西放在`drawable-mdpi`中. (3认同)
  • ImageView有点不同 - 它将采用任何形式的源图像并处理缩放本身.如果将drawable设置为任何View的背景,则应该观察到正确的行为.我也永远不会把图像放在`drawable`文件夹中 - 它们应该总是在一个合格的文件夹中. (2认同)

Lan*_*abs 9

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

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

    如果您的代码将进行自己的缩放(或不进行缩放)并且您不希望Android预先缩放图像,则drawable-nodpi会很有效.

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

    如果不存在密度和屏幕规格的精确匹配,则将使用没有规格的可绘制.drawable-nodpi将在drawable之后使用.

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

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

    • 绘制,LDPI
    • 绘制,MDPI
    • 绘制,华电国际
    • 绘制,xhdpi
    • 绘制,xxhdpi
    • 绘制,xxxhdpi
    1. 如果密度不匹配,则选择其中一个
    • drawable(自动缩放mdpi = none ... xxxhdpi = 4x)
    • drawable-nodpi(无缩放)
    • 绘制,tvdpi
    • drawable-anydpi(无缩放)
    • drawable实际上是缩放图像(我切换到nodpi文件夹,我看到xhdpi设备上的内存监视器有50%的改进) (3认同)

    Pri*_*nce 8

    这取决于.

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

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


    那么,如果我们看一下可能的限定词值屏幕像素密度(DPI) ,这些被列为:

    1. LDPI
    2. MDPI
    3. 华电国际
    4. xhdpi
    5. xxhdpi
    6. xxxhdpi
    7. nodpi (非扩展资源在这里)
    8. tvdpi
    9. anydpi (此文件夹中的资源优先级最高)
    10. nnndpi

    注意:您应该将所有这些资源放在drawable-nodpi希望缩放的文件夹中.为了支持多个屏幕,Android更倾向于缩小较大的原始图像,而不是放大较小的原始图像.这些资源应存在于任何其他绘制限定符文件夹否则这些可能被缩放哪一种失败的全部目的.


    还必须指出:

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


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

    在此输入图像描述