为什么要提供各种密度的多个drawable?

时间:2013-01-08 12:21:25

标签: android drawable screen-resolution

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

如果您只提供mdpi drawables,它们将在hdpi / xhdpi(模糊)上放大,并在ldpi屏幕上缩小。

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

那么为什么还要为xhdpi提供其他密度的drawable?

4 个答案:

答案 0 :(得分:8)

使用预分割的drawable有几个原因:

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

  2. 缩小大图像可能会导致质量低于使用“预先调整”的较小图像。特别是如果您的图像基于矢量原始图像。或者它们包含非常细的线条或细节,由于缩放而会丢失 例如:
    original image变为scaled image
    有关这些图像的来源以及有关缩放工件的更多信息,请参阅here

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

如果你自己进行缩放,那么与自动缩放相比,结果可能会更好。如果准备好了drawable,你的应用程序就不会消耗缩放资源。

答案 3 :(得分:0)

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