对于 Android 应用程序,在可绘制目录中存储多个图像尺寸更好,还是在资产中仅存储单个大图像更好?

问题描述 投票:0回答:1

我正在开发一个本机 Android 应用程序,并正在考虑管理图像资源的最佳方式。传统上,我们建议我们将每个图像的多种尺寸存储在各种可绘制文件夹(

drawable-mdpi
drawable-hdpi
drawable-xhdpi
drawable-xxhdpi
drawable-xxxhdpi
)中,以匹配不同的设备屏幕密度。然而,我质疑这种方法在今天是否仍然相关或必要。

考虑到 Android 在处理图像和屏幕密度方面的进步,在 asset 文件夹中仅存储单个高分辨率图像(例如,将原始 100x100 图像存储为 400x400 图像)并在 asset 文件夹中动态调整其大小是否更有效或更有利?基于设备屏幕密度的应用程序?

例如,对于最初尺寸为 100x100 的图像:

传统上,我会存储这些变体:

drawable-mdpi = 100x100
drawable-hdpi = 150x150
drawable-xhdpi = 200x200
drawable-xxhdpi = 300x300
drawable-xxxhdpi = 400x400

但是,在像 Google Pixel 7 这样屏幕密度系数为 2.625 的设备上,系统会从

drawable-xxhdpi
检索 300x300 图像,然后将其大小调整为 263x263px。这会导致图像大小被调整两次,可能会降低其质量。

我注意到许多应用程序似乎主要将图像存储在资产文件夹中,而不是在可绘制目录中。谁能确认这是否是一种常见做法? 2024 年,在 Android 应用中处理图像以平衡图像质量和应用性能之间的推荐方法是什么?

android android-studio android-drawable android-resources
1个回答
0
投票

恕我直言,这主要是一个性能问题。

质量不应该成为问题,因为预处理(下采样到密度桶)是在桌面上完成的,您可以在桌面上使用高质量的方法(例如Lanczos过滤

很明显,在编译时调整一次大小比在运行时多次调整大小要好。但是分数密度因子呢?好吧,在运行时将大小从 300x300 调整到 240x240 仍然比从 400x400 调整大小便宜。

使用可绘制资源的另一个好处是它们由 AAPT2 工具进行预处理,该工具分析它们,并且在某些情况下可以减小大小。

你是对的,现代设备功能更强大,性能差异不太明显。但有些项目比其他项目要求更高。所以你的问题没有布尔答案。

© www.soinside.com 2019 - 2024. All rights reserved.