在Android上重复使用不同屏幕尺寸和密度的可绘制图像

jbc*_*c25 9 android alias xml-drawable android-drawable android-bitmap

背景: 我正在为平板电脑(风景)开发一个Android应用程序,其图像资源的分辨率为1920x1200.该分辨率适合以下屏幕尺寸和密度:

drawable-xlarge-hdpi
drawable-large-xhdpi
Run Code Online (Sandbox Code Playgroud)

问题: 如果我在这两个文件夹中包含所有重复的图像资源,则APK的最终大小将不必要地大

我的方法不成功: 我尝试使用Alias来实现此处定义的drawable:http: //developer.android.com/guide/topics/resources/providing-resources.html#AliasResources

我有我的图像资源:

res/drawable-nodpi/image_cmn.png
Run Code Online (Sandbox Code Playgroud)

和相应屏幕大小和密度文件夹中的两个别名:

res/drawable-xlarge-hdpi/image.xml
res/drawable-large-xhdpi/image.xml
Run Code Online (Sandbox Code Playgroud)

image.xml:

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/image_cmn" />
Run Code Online (Sandbox Code Playgroud)

当然,当我在布局文件中使用我的图像时,我引用了别名:

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:src="@drawable/image" />
Run Code Online (Sandbox Code Playgroud)

但遗憾的是Android没有正确调整我的测试平板电脑(mdpi)的资源,结果是我有更大的图像.

我试图将原始的png移动到res/drawable甚至res/raw但是结果与res/drawable-nodpi相同.

如果我将此png移动到res/drawable-xlarge-hdpi(与xml别名相同),结果是正确的但自然不能解决我的问题因为我也必须将它们复制到res/drawable-large-xhdpi和apk大小增加.

有谁知道如何实现这一目标?

Jar*_*lls 3

我尽量避免在 ImageViews 上使用 wrap_content ,因为不同的平台版本调整图像大小的方式不同,如果您在 dp 中放置明确的宽度和高度,那么选择哪个图像并不重要。

在你的情况下,我将在drawable/xhdpi 中有一个图像。在布局文件中以 dp 指定其宽度和高度。对于 1920x1200px 的图像,layout_width=“960dp”layout_height=“600dp”

超大平板电脑上的图像与大平板电脑上的物理尺寸大致相同。

如果您希望图像在超大平板电脑上更大,请包含第二个布局文件,其中图像的宽度和高度增加,但保持相同的图像。

或者,您可以使用large 和x-large 之间不同的维度资源。