【问题标题】:Why provide multiple drawables for various densities?为什么要为不同的密度提供多个可绘制对象?
【发布时间】:2013-01-08 12:21:25
【问题描述】:

我的应用支持从 ldpi 到 xhdpi 的各种屏幕密度。它包含一些需要在所有密度上正确显示的可绘制对象(图像)。 我想知道实际上需要提供多少种不同分辨率的可绘制对象,考虑到 Android 运行时在找不到合适密度的资源时会缩放资源。

如果您只提供 mdpi 可绘制对象,它们将在 hdpi/xhdpi(模糊)上按比例放大,在 ldpi 屏幕上按比例缩小。

但是,如果您只提供 xhdi 资源,那么它们将在所有低密度屏幕上按比例缩小。缩小不会使它们变得模糊,它们看起来会很好。

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

【问题讨论】:

  • 因为 Photoshop 或类似的图像编辑程序,比 android 基本比例算法效果更好

标签: android drawable screen-resolution


【解决方案1】:

使用预缩放可绘制对象有几个原因:

  1. 缩小到较低的分辨率会占用资源(CPU 时间、内存,并且会更快耗尽电池),尤其是如果您有很多图像,这可能是不受欢迎的。

  2. 缩小大图像可能会导致比使用“预先调整”的小图像更差的质量。特别是如果您的图像基于矢量原件。或者它们包含非常精细的线条或细节,当缩放时会丢失。
    例如:
    变为
    请参阅 here 了解这些图像的来源以及有关缩放伪影的更多信息。

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

【讨论】:

  • 是的,但这些伪影也会出现在 Photoshop 中——不是吗?
  • 这取决于使用的缩放方法,您可以在照片编辑应用程序中手动选择。 (专业)照片编辑应用程序往往具有更高(更好)质量的缩放方法(因此需要更多的资源)。最后但同样重要的是,当您手动缩放图像时,您会看到结果并能够修复工件(如果需要)。
【解决方案2】:

您关于扩展资源的假设不正确。一些大图像在按比例缩小后可能仍然看起来不错,但这不是一般情况。如果图像具有平滑的过渡且没有渐变,则可以很好地按比例缩小。例如,包含急剧过渡或包含文本的图像在较低分辨率下会看起来很丑。

【讨论】:

    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      没有必要,但例如,您可以针对不同的屏幕分辨率使用具有不同可绘制对象的不同布局。您可以选择这样做。如果您和您的用户对结果感到满意,那就太酷了。如果您需要不同密度和分辨率的不同行为,那么此功能非常有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-31
        • 1970-01-01
        • 1970-01-01
        • 2022-01-10
        相关资源
        最近更新 更多