我知道使用具有不同 DPI 的图像在 Android 中是一种相当普遍的做法。但是我并没有真正看到它的目的,为什么我们不能只使用一个超大的图像,然后在程序中对其进行缩放?我知道如果我们不使用不同 DPI 的图像,我们可能需要进行额外的计算,但除此之外,还有其他原因吗?
3 回答
蒂姆和广告对你有正确的推理。如果您想查看重新缩放或以正确大小绘制的内容之间的比较,这是一个视觉示例。如果有非常小的细节,效果总是更明显。
第一个是一个大的 200x200(我们称之为 xhdpi),第二个是为 mdpi (75x75) 重新采样的相同图像。第三个重新设计为相同的规格,但从 75x75 开始。如您所见,第二个文本明显模糊,并且在重新缩放的形状边缘存在一些伪影。
您可以获得针对屏幕密度优化的图像。如果你把它全部留给xhdpi,你一定知道在这个过程中可能会丢失一些重要的像素,因为你没有注意这一点。
如果您不关心速度和准确性,并且您认为人们不会注意到丢失了重要的像素,那么可以使用这种方法。
不仅如此,如果您自己缩放图像(例如使用权重),您根本不需要将它们放在 dpi 文件夹中 - 您可以将它们放在 drawable-nodpi 文件夹中。
通过为每个主要的屏幕密度类别提供已经渲染为适当大小的图像,您可以避免在代码中显式地进行缩放,这将使代码“更干净”。
您还可以避免因显示的每个图像都必须缩放而导致的性能消耗,具体取决于您的应用程序必须进行多少缩放" 因为视图正在向用户显示。
最后,为每种尺寸提供适当渲染的图像将确保您的资源看起来更好。系统缩放并不完美,如果它必须缩放它们,则会损害图像的“清晰度”。如果它必须显着扩展它们,这将是用户注意到的。