我是否需要添加不同大小的相同可绘制对象,即使它们每个都有多个 DPI 版本?

Do I need to add different sizes of the same drawables even though each of them has multiple DPI versions?

我正在使用 "Icon Pack Drawable Importer" 插件,我认为它可能从“https://design.google.com/icons”导入图标。每个图标都有多种尺寸(18dp、24、36、48 ...),每种尺寸都有多个 DPI(mdpi ~ xxxhdpi)。

这有点让人迷惑,因为据我所知在Windows上,你只是定义同一个图标的多个分辨率,系统会自动选择最接近的分辨率(最佳)版本实际图纸尺寸。

假设我想在同一台设备上以两种不同的尺寸显示两个箭头。假设我只添加了一个箭头图标,其大小为 48dp,但其中有 5 个不同的 DPI 版本。如果我以编程方式指定最终的可绘制大小,Android select 是否是最接近的?例如小箭头的mdpi版本和大箭头的xxxhdpi版本?或者 Android select 一个与系统的 DPI 匹配并调整大小并将其用于两个箭头的版本?

我想让用户为他们选择图标大小(有些人可能想要大的,有些人可能想要小的),但是添加一个本身具有 DPI 版本的图标的多个尺寸版本似乎有点复杂。所以,我想只添加最大尺寸(48dp 版本,但其中有 5 个 DPI 版本),如果用户想要更小的图标,则以编程方式指定更小的分辨率,因为放大会使图标模糊,但缩小不会。这是个坏主意吗?我应该向资源中添加同一图标的多个尺寸和多个 DPI 吗?

如果您的屏幕是 mdpi,您的所有可绘制对象将首先从 res/drawable-mdpi 目录加载,然后,如果找不到文件,则从 res/drawable 目录加载。因此,如果您以编程方式将 24x24 mdpi 图标的大小调整为 64x64 像素,您的图片质量会下降,Android 将不会为您加载 xxdpi 图标。

如果您以编程方式设置所有图标大小,只需 select 最高分辨率的图标并将它们全部转储到 res/drawable 目录中。

res/drawable-mdpi 中的图标仍然具有使用较少内存且不需要 mipmap 的优势,但是现代手机可以在硬件中调整所有图形的大小,并应用平滑和 mipmap。