【问题标题】:With default resources in the drawable folder (MDPI sized) what's the point of the drawable-mdpi folder?使用可绘制文件夹中的默认资源(MDPI 大小),drawable-mdpi 文件夹有什么意义?
【发布时间】:2011-03-14 17:57:57
【问题描述】:

我有各种不同像素密度的全套图像,我需要将位图资源放入 drawables 文件夹(在 MDPI)以用作默认资源(以防止在我没有的像素密度设备上崩溃迎合,例如 xhdpi),但这意味着将 drawable-mdpi 中的资源复制到 drawable 文件夹中。

因此,由于重复显然很糟糕,我想知道是否应该删除 drawable-mdpi 文件夹,并将我的 MDPI 资源保留在(默认)drawable 文件夹中

还是我错过了什么?

【问题讨论】:

    标签: android resources drawable


    【解决方案1】:

    您不需要复制您的资源。一个好的做法是执行以下操作: - 将所有非基于图像的可绘制对象放入 res/drawable/(例如所有 XML 可绘制对象) - 将所有基于图像的可绘制对象(图像和 9-patches)放入 res/drawable-mdpi、res/drawable-hdpi 等。

    【讨论】:

    • 谢谢罗曼。因此,对于 drawable-ldpi/mdpi/hdpi 中的图像,drawables 本身没有位图,应用程序不会在 xhdpi 设备上爆炸,还是会放大 hdpi 位图?我认为可绘制文件夹中需要默​​认位图(以 MDPI 比例)
    • 我很乐意按照您在此处的建议将 xml 资源与图像资源分开,但是,据我了解,如果您支持 ldpi 设备并且只有 mdpi 优化的资源,您将无法这样做。如果我们放弃 ldpi 支持,那么我们可以。
    • 我不同意。在我看来,如果他们引入像 xxhdpi 这样的新格式,这将不起作用。我需要时刻注意并注意新的格式。如果 drawable 中没有默认图像,应用程序会因为缺少资源而在 xxhdpi 上崩溃。
    • @Bevor,这是不正确的。如果引入像 xxhdpi 这样的新格式,Android 将从最接近的密度(例如 xhdpi)中选择可绘制对象并放大图像。
    • 您应该将所有位图资源置于明确的密度限定符下。是的,不合格目录假定为mdpi;这只是为了在引入密度限定符之前兼容,并且没有理由将位图放在那里。将位图放在 -mdpi 下不会导致任何兼容性问题。 (更具体地说:所有这些 -mdpi 和其他限定符由 aapt 处理和理解;平台本身根本不关心目录是什么。)
    【解决方案2】:

    我想说的是,显然 Romain 家伙在使用 drawables 保存 xml 文件然后将图像资源移动到相关的 mdpi、hdpi 和 ldpi 文件夹中是正确的,我唯一反对的时候是当你希望以 1.5 设备为目标。

    原因是因为 1.5 无法识别 -hdpi、-mdpi 和 -ldpi 标签,它会忽略它们并从每个文件夹中选择资源(看似随机),因此您必须添加以下标志 - hdpi-v4、-mdpi-v4、-ldpi-v4,这将使这些文件夹可以被 1.6+ 版本的 Android 访问,强制 1.5 只能看到可绘制文件夹,此时您需要将所有资源都放在可绘制文件夹中,这然后消除了对 drawable-mdpi 文件夹的需要。

    但是,由于 1.5 正在起步,而且很少有设备拥有它,因此以 1.6+ 为目标并忽略此复杂性更有意义。

    【讨论】:

    • 让我感到困惑的是,对于某些可绘制对象,我在 hdpi 文件夹中只有一个位图,并且应用程序崩溃了,说它找不到资源。我创建了 mpdi 和 ldpi 版本,所以一切正常,但奇怪的是 Android 没有选择它拥有的最接近的图像并对其进行缩放。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    • 2018-09-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多