为什么要为不同密度提供多个可绘制对象?

3

我的应用支持从 ldpi 到 xhdpi 等多种屏幕密度。其中有一些可绘制对象(图片)需要在所有密度上正确显示。

我想知道实际上需要提供多少种不同分辨率的可绘制对象,考虑到 Android 运行时会在找不到适当密度的资源时自动缩放资源。

如果您仅提供 mdpi 的可绘制对象,则它们将在 hdpi/xhdpi 上被放大(模糊),而在 ldpi 屏幕上则会被缩小。

然而,如果您只提供 xhdi 资源,则它们将在所有低密度屏幕上缩小。缩小不会使它们变得模糊,它们看起来也很好。

那么,为什么要提供除 xhdpi 以外的其他密度的可绘制对象呢?


由于 Photoshop 或类似的图像编辑程序,比 Android 基本的缩放算法效果更好。 - Davide Berra
4个回答

8
使用预定比例缩放的可绘制对象有以下几个原因:
  1. 将图像缩小到较低分辨率需要资源(CPU 时间、内存和电池),特别是如果您有大量图像,这可能是不希望看到的。

  2. 缩小大图像的质量可能会比使用“预调整”的较小图像差。特别是如果您的图像基于矢量原始图像。或者他们包含非常细小的线条或细节,这些在缩放时会丢失。
    例如:
    original image 变成 scaled image
    请参见此处以获取这些图像及有关缩放伪影的更多信息。

  3. 在较低的分辨率下,图像像素较大(或图像变小),因此可能需要删除某些图像方面以保持其清晰/易理解性。


是的,但是这些瑕疵在 Photoshop 中也会出现,不是吗? - stoefln
1
这取决于所使用的缩放方法,你可以在照片编辑应用程序中手动选择。专业的照片编辑应用程序往往具有更高质量的缩放方法(因此需要更多资源)。最后,当你手动缩放图像时,你可以看到结果并且能够修复必要的伪影。 - Veger

1

你对资源扩展的假设是不正确的。一些大型图像在缩小时可能仍然看起来很好,但这并不是普遍情况。如果图像具有平滑的过渡和没有渐变,它将被很好地缩小。包含锐利转换或文本的图像在较低分辨率下看起来会很丑陋。


0

如果您自己进行缩放,结果可能会比自动缩放更好,而且如果可绘制对象已准备好,则您的应用程序不会消耗资源进行缩放。


0

不是必须的,但例如,您可以针对不同的屏幕分辨率使用不同的布局和可绘制资源。您可以选择这样做。如果您和您的用户对结果感到满意,那就很棒。如果您需要在不同的密度和分辨率下实现不同的行为,则此功能非常有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接