【发布时间】:2014-10-02 21:59:43
【问题描述】:
背景: 我正在为平板电脑(横向)开发一个具有分辨率为 1920x1200 的图像资源的 Android 应用程序。该分辨率适合以下屏幕尺寸和密度:
drawable-xlarge-hdpi
drawable-large-xhdpi
问题: 如果我在这两个文件夹中包含所有复制的图像资源,则 APK 的最终大小将不必要地沉重
我不成功的做法: 我尝试对此处定义的可绘制对象使用别名: 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
image.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 大小增加。
有人知道如何实现吗?
【问题讨论】:
-
通常我们只对可绘制资源使用密度限定符。你真的不需要添加 large/xlarge,因为这两个只处理布局资源。(顺便说一句,我从来没有看到它们一起使用)
-
@suitianshi:不,根据屏幕大小设置不同的drawable也是合理的。 Google 在平台中执行此操作,例如,使用
res/drawable-sw600dp-hdpi/等资源目录。 -
“该分辨率适合以下屏幕尺寸和密度”——1920x1200 与屏幕尺寸几乎没有关系。例如,我希望在今年晚些时候看到
-normal设备运行该分辨率(或更高)。 -
@CommonsWare 我同意,手机也可以有这个分辨率。在这种情况下,我只需要为平板电脑开发,所以这些是我需要的文件夹
-
我也有同样的问题,使用别名的时候图片太大了,这种方法对drawables基本上没用......谷歌如何将这种东西发布到生产中?
标签: android alias android-drawable android-bitmap xml-drawable