4

我在每个文件夹中都有一个带有 4 个版本的相同图像的 Android 应用程序:

drawable-ldpi/
drawable-mdpi/
drawable-hdpi/
drawable-xhdpi/

图像之间的唯一区别是大小,我只是将原始大图像按照公式缩小:

120dp lpdi, 1 dp=0.75 像素
160dp mpdi, 1 dp=1 像素
240dp hdpi, 1 dp=1.5 像素
320dp xhpdi, 1 dp=2 像素

问题是我打算拥有超过 100 个图像,所以为了减小文件大小,我不能将 xhdpi 版本放在 drawables/ 文件夹中,而不是每个图像有 4 个版本,那么 Android 可以根据需要缩放图像吗?这样做有什么缺点?它只是性能和文件大小之间的权衡吗?

4

3 回答 3

1

只有 xhdpi 资源会大大降低您的应用程序性能。此外,在低端设备(小屏幕和小内存)上,VM 很可能会在处理这些大位图时耗尽内存并崩溃。

您可以在高端设备上开发所有内容,并使用简单的 Photoshop 自动化来创建其他资源,但最好拥有更大的 APK,而不是您的应用无法在中低端设备上运行。

另一种选择可能是导出多个 APK(每个屏幕类型一个)并使用清单指定它支持的屏幕尺寸,并让市场将正确的 APK 过滤到正确的设备。

于 2012-10-29T15:19:58.303 回答
1

您可以将 xhdpi 版本放在可绘制资源中。然后在您的布局/xml 文件中指定 dp 中的图像尺寸。Android 会相应地缩小您的图像。只要您缩小图像的可绘制资源质量,就不会改变。

于 2012-10-29T15:12:26.330 回答
0

你可以。缺点可能是图像质量稍差:考虑到 hdpi 显示,您需要缩放 240/320 倍,即 0.75,或者说,例如在一维像素行中,您从 4 个源像素中构成 3 个目标像素。大多数时候它看起来会非常好,但我想一些像素艺术可能是个例外。我想这也可能更慢,并且使用的内存比它可能的多,但我没有测量,所以我不能确定。

PS我自己也在使用这种方法(仅提供xhdpi资源)。

于 2012-10-29T15:14:49.747 回答