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

标签 android alias android-drawable android-bitmap xml-drawable

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

drawable-xlarge-hdpi
drawable-large-xhdpi

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

我不成功的方法: 我尝试对此处定义的此可绘制对象使用 Alias: http://developer.android.com/guide/topics/resources/providing-resources.html#AliasResources

我的图片资源在:

res/drawable-nodpi/image_cmn.png

以及相应屏幕尺寸和密度文件夹中的两个别名:

res/drawable-xlarge-hdpi/image.xml
res/drawable-large-xhdpi/image.xml

图像.xml:

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

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

<ImageView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:src="@drawable/image" />

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

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

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

有人知道如何实现吗?

最佳答案

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

在你的情况下,我会在 drawable/xhdpi 中有一个图像。在 dp 的布局文件中指定它的宽度和高度。对于 layout_width="960dp"layout_height="600dp"

的 1920x1200px 图像

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

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

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

关于android - 在 Android 上针对不同的屏幕尺寸和密度重复使用可绘制图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25220152/

相关文章:

java - 不能用java随机设置一个新按钮

android - Slidingdrawer 切换图标不可见

c++ - 什么是 'aliased' 流缓冲区?

android - 尝试重新缩放位图时出现 OutOfMemory 错误

java - 关于oneToMany和ForeignKey的DBFlow问题

java - 无法在 GridView 中获取图像

bash - 如何将循环合并到 bash 别名中

shell - Unix 中更改目录的别名

android - 为什么 getDrawable() 在某些 Android 设备上不起作用?

android - 如果我应用背景,如何在 EditText 上返回默认样式?