【问题标题】:What is the optimal bitmap size for drawable ldpi / mdpi / hdpi / xhdpi folders?可绘制 ldpi / mdpi / hdpi / xhdpi 文件夹的最佳位图大小是多少?
【发布时间】:2012-07-23 14:25:53
【问题描述】:

我想缩放图像,使其最适合屏幕尺寸,并且不会占用比所需更多的内存。

目前我把为 640 x 960 屏幕制作的图像放在 hdpi 文件夹中,看起来不错,但它消耗的内存比需要的多得多。例如,一个 480 x 800 的设备是 hdpi 并将加载这些位图。

由于我知道的大多数 hdpi 设备都是 480 x 800,我的第一个想法是缩小 hdpi 中的所有图像以适应 480 x 800 的屏幕。但我不确定,因为 hdpi 不仅仅指分辨率,还指密度。

文件夹指的是密度,这很令人困惑,但位图只是像素,我不知道如何将它们分配在那里...

非常感谢任何帮助。

提供更多背景信息:问题是我有一个位图动画,其中包含超过 20 个位图,每个位图为 640 x 588 像素。因此,在某些设备上,仅此一项就会耗尽内存。每个位图占用 640 x 588 的内存为 1.43 mb!。如果我缩小到 480 x 441,我会得到 0.80 mb,这是一个巨大的进步。而且由于在 480 x 800 设备中我不会丢失细节,因此我会缩小所有图块。

【问题讨论】:

    标签: android bitmap resolution


    【解决方案1】:

    在我看来,适合全屏大小的图像对于一般的 Android 来说并不是一个好主意。就是说,如果这是您需要做的,我会更少担心内存使用情况,并选择您认为特定密度所需的最大尺寸,然后让操作系统从那里缩小以适应屏幕尺寸的微小差异.不要忘记,如果您需要更具体,也可以按屏幕尺寸指定可绘制对象(例如 drawable-large-hdpi)。

    根据图像,如果可以使背景的任何部分可拉伸,我建议将其设置为 9-patch,并调整其大小以适合该密度桶中的最小屏幕和让它适应屏幕。

    【讨论】:

    • 我有一个动画,每个 640 x 588 有 20 多个位图,这就是我缩小的每一位都很重要的原因。使用 480 x 441 位图,消耗的内存减少了 40%(!)首先我认为实际消耗的内存是按比例缩小后的位图,但它以原始大小加载整个位图,然后按比例缩小,因此,它会占用很多位图越大,内存越大
    • 这似乎...过分了。可能只在drawable-nodpi 中保留一组位图,并在第一次启动时,转换并缓存本地集,并以适合其运行设备的分辨率进行缓存?
    • 缓存...不,谢谢。我还会加载其他图像,这个动画很少,所以会浪费内存。我希望每次运行动画时都进行这种转换。但是我想像正常播放动画一样,它首先需要将所有位图以原始大小加载到内存中,所以我有同样的问题。
    • 我的意思是在应用程序第一次运行时缓存到本地存储(如SD卡或SD分区),然后只有在需要时才能将它们加载到内存中。这样一来,您就不会浪费可能永远无法访问的多组图像的空间。
    • 嗯...有趣的想法。所以我把它们放在大尺寸的 hdpi 中,一旦进入设备,我就知道确切的尺寸并将缩放后的图像放入 SD 卡中......听起来不错,如果没有其他解决方案,我可能会这样做,当我有更多的时间。但现在我仍在寻找一个最佳的、最小的位图大小来放入 hdpi。
    猜你喜欢
    • 1970-01-01
    • 2018-12-23
    • 1970-01-01
    • 2013-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-12
    • 1970-01-01
    相关资源
    最近更新 更多