如何将android位图别名为另一个大小的drawable(drawable-large-mdpi别名为drawable-hdpi)

时间:2011-02-18 21:57:46

标签: android bitmap drawable tablet screen-size

我正在努力为我的应用添加对平板电脑大小屏幕的支持。我已经在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位图,但我不知道如何从特定目录中引用drawable。有什么帮助吗?

/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').

2 个答案:

答案 0 :(得分:16)

将您的按钮资源移至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

的好文章

答案 1 :(得分:2)

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

编辑:我刚试过这个,它确实以一种方式解决了你的问题。它们在drawables-large-hdpi文件夹中的图像在运行应用程序时显示在Galaxy选项卡上。但不幸的是,添加大型限定符使得它们不会出现在具有hdpi密度的中型屏幕上。看起来你可能需要制作单独的文件夹并拥有2个大型资源副本,如果你想获得这个功能=(。