我是否需要添加不同尺寸的相同drawables,即使它们每个都有多个DPI版本?

时间:2016-07-05 16:35:41

标签: android android-drawable

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

这有点令人困惑,因为据我所知,在Windows上,您只需定义相同图标的多个分辨率,系统将自动为实际图纸尺寸选择最接近的分辨率(最佳)版本。

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

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

1 个答案:

答案 0 :(得分:1)

如果您的屏幕是mdpi,那么所有的drawable将首先从res / drawable-mdpi目录加载,如果找不到该文件,则从res / drawable目录加载。因此,如果您以编程方式将24x24 mdpi图标调整为64x64像素,则会降低图像质量,Android将不会为您加载xxdpi图标。

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

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