【问题标题】:Android - Cascading drawable folders and default drawablesAndroid - 级联可绘制文件夹和默认可绘制对象
【发布时间】:2011-10-14 15:15:54
【问题描述】:

我有以下可绘制文件夹

/drawable/
/drawable-hdpi/
/drawable-ldpi/
/drawable-mdpi/
/drawable-xhdpi/

如果我有图像资源,我需要创建 5 个(或 4 个?)不同分辨率版本的文件吗?假设我只制作了两个版本并将它们放在各自的文件夹中:

/drawable/
/drawable-hdpi/image.png
/drawable-ldpi/
/drawable-mdpi/image.png
/drawable-xhdpi/

当 LDPI 或 XHDPI 设备上的某人访问需要显示 image.png 的 Activity 时会发生什么?它只是不显示吗?应用程序会崩溃吗?还是Android遵循资源级联系统,显示最接近当前屏幕密度的版本?

另外,在这种情况下,/drawable/ 文件夹中没有image.png。这很糟糕吗?每个资源都应该(至少)在/drawable/ 文件夹中有一个版本吗?

另外,如果您指定了所有 4 个屏幕密度可绘制文件夹(xhdpi、hdpi、mdpi、ldpi),那么普通的/drawable/ 文件夹有什么意义?什么时候会用到?

【问题讨论】:

    标签: android resources drawable


    【解决方案1】:

    如果我有图片资源,我需要创建 5 个(或 4 个?)不同的 文件的分辨率版本?

    不,你不必

    当 LDPI 或 XHDPI 设备上的某人访问 Activity 时会发生什么 需要显示image.png?它只是不显示吗?是否 应用程序崩溃?还是Android遵循资源级联系统,显示 最接近当前屏幕密度的版本?

    Android 对其资源使用了一个很好的级联系统。 This page 解释了一下。 如果 LDPI 资源不可用,Afaik LDPI 设备使用 MDPI 资源,XHDPI 使用 HDPI 资源。 (我可能有点跑题了,我不记得确切的规则了)你的应用不会崩溃。 如果您的资源分辨率高于屏幕所能容纳的分辨率,您的应用就会崩溃。

    另外,在这种情况下,我的 /drawable/ 文件夹中没有 image.png。 这很糟糕吗?每个资源是否应该(至少)有一个版本 在 /drawable/ 文件夹中?

    不,没有必要。

    另外,如果您指定了所有 4 个屏幕密度可绘制文件夹 (xhdpi, hdpi, mdpi, ldpi),那么正常的意义何在 /drawable/ 文件夹?什么时候会用到?

    drawable 文件夹用于存放不需要缩放的图像,以及形状可绘制资源 XML 文件等。

    【讨论】:

    • 谢谢。关于您对使用 MDPI 的 LDPI 和使用 HDPI 的 XHDPI 的了解,您从哪里获得这些信息?或者这只是来自测试?
    • 查看我的编辑,添加链接:developer.android.com/guide/topics/resources/…
    • 仅供参考,我在那个页面上找到了这个However, if the only available resources are larger than the current screen, the system will not use them and your application will crash if no other resources match the device configuration (for example, if all layout resources are tagged with the xlarge qualifier, but the device is a normal-size screen).
    • 酷,实际上我不知道,每天都有新事物 ;) 将其反映在答案中以便其他人清楚。
    • 上面引用的文字是指屏幕尺寸而不是屏幕密度。它们不是“分辨率”特定的资源。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-18
    相关资源
    最近更新 更多