15

我正在努力为我的应用程序添加对平板电脑大小的屏幕的支持。我已经有适用于不同密度屏幕的 drawable-mdpi 和 drawable-hdpi 图像。我的问题是像 Galaxy 7 这样的平板电脑,它是一个“大”屏幕,但仍然是中等密度。我的部分布局在屏幕宽度上有 5 个均匀分布的按钮。在带有 mdpi 图形的大屏幕上,虽然图像非常小,它们之间有大量空白。

我想为大布局使用更大的图形,以使它们看起来合适,并利用屏幕空间。我的 hdpi 目录中有一些可以完美运行的双倍大小的图形。作为测试,我已将 /res/drawable-hdpi 中的所有图像复制到 /res/drawable-large-mdpi 中,一切看起来都完全符合我的要求。

但是,我不想通过处理所有这些图像来膨胀我的应用程序的大小。我只想为它们中的每一个创建别名,以便在请求 /res/drawable-large-mdpi/button_0 时,它实际上会使用 /res/drawable-hdpi/button_0 。

我尝试创建一个 xml 位图,但我不知道如何从特定目录引用可绘制对象。有什么帮助吗?

/res/drawable-large-mdpi/button_0.xml 的内容:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable-hdpi/button_0" />

我得到的错误是:

error: Error: No resource found that matches the given name (at 'src' with value '@drawable-hdpi/button_0_highlighted').
4

2 回答 2

19

将您的按钮资源移动到drawable-nodpi文件夹中并将其重命名为button_0_hdpi.xml.

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/button_0" />

使用 XML 别名时,您不能指定限定符。你有@drawable-hdpi,它只需要@drawable。您可能还需要在按钮位图的原始位置创建第二个 XML 别名。

这是一篇关于方法的好文章http://blog.evendanan.net/2011/03/Android-resources-and-device-fragmentation

于 2011-06-28T18:06:59.633 回答
3

此页面讨论了您可以在资源文件夹上使用的不同修饰符。似乎表明优先顺序是屏幕尺寸(小,中,大,xlarge)高于密度(ldpi,mdpi,hdpi)。我认为这意味着如果您将 drawables-hdpi 文件夹重命名为 drawables-large-hdpi,即使 Galaxy 选项卡具有中等密度,它仍将使用该文件夹中的可绘制对象,因为它有一个大屏幕。

编辑:我刚刚对此进行了测试,它确实以一种方式解决了您的问题。它们在 drawables-large-hdpi 文件夹中生成图像,以便在运行应用程序时显示在 Galaxy 选项卡上。但不幸的是,添加大限定符使得它们不会出现在具有 hdpi 密度的中型屏幕上。如果您想获得此功能,您可能必须创建单独的文件夹并拥有 2 个大型资源的副本 =(.

于 2011-02-18T23:44:04.070 回答