Android 使用 PNG 和 OOM 为按钮设置动画

Android animating a button using PNGs and OOM

所以我尝试通过本例中给出的示例为按钮设置动画:Android Developers 并用 Pngs 制作了一个巨大的(95 张图片)动画列表。当尝试 运行 应用程序并按下按钮时,我立即收到有关内存不足的错误消息。文件大小约为 170k(总共 12mb)。这对动画来说太多了吗?我意识到这种方法严重缺乏对最终用户存储 space 的关注,但无论如何它主要供我自己使用,并不重要。

图片比较大,需要图形引擎缩小,这可能与此有关?

还是95张图片太多了?我可以让图片变小,现在它们的分辨率高达 4K,事后看来这是非常愚蠢的。

不过,我可以压缩图片,从一开始就把它们变小,所以这不是问题。我只需要知道如何解决这个问题,如果有一个阈值可以在特定时间加载到 RAM 中,以便我可以匹配图像大小,或者是否有办法覆盖默认 RAM 设置或克服这个问题?

别看文件大小。图片必须解压缩,以便 Android 可以使用它。图片大小大致等于宽*高*4。 4K 图像占用约 35MB 内存。

现代设备可为每个应用分配 64MB 内存。这意味着您只能加载一个这样的图像。如果您的 phone 具有更高的堆限制,可能会更多。

AnimationDrawable 适用于小型动画(如 100x100 像素)。如果你想播放这么大的动画,你应该把它编码成mp4。如果您可以缩小图像或使动画程序化 - 那就去做吧。

要覆盖内存限制,请使用 'largeHeap' 标志或更改 ROM 配置中的设置(您必须使用自定义 ROM 刷新您的设备)。