1

我有一个 135 帧的帧动画,每秒应该交换 25 次。帧为 700X1000 像素,240 dpi。我遇到的问题是,每当我在 XML 动画文件中定义超过 5 帧时,应用程序就会崩溃。框架位于可绘制文件夹中。我尝试将它们复制到 drawable-xhdpi 但这并没有解决问题。

谢谢,西蒙

4

3 回答 3

1

该错误清楚地表明您正在尝试使用更多内存。这直接指向图像大小。因此,您需要调整图像大小以使用更少的内存。出于这个原因可以使用的一个是BitmapFactory.Option。或者手动调整图像大小,注意它是否适合您的所有需求。

堆大小是分配给应用程序执行的内存量。android 应用程序的堆大小由设备 RAM 决定。例如,如果设备的 RAM 为 179 MB,则 android 应用程序只会获得 18MB 的堆大小。

在这里找到更多。有关如何有效加载大型位图的更多信息,请参见此处

于 2012-12-31T12:02:42.310 回答
1

加载图像会消耗 32MB 或 64MB 的所有堆内存(应用程序可用的内存)的问题。图像作为 ARGB 中的位图加载到堆中 - 每个像素 4 个字节。尝试对动画图像进行二次采样。您的动画有 135*700*1000*4 字节 = 360.5 MB。

您可以将方法decodeResource与 BitmapFactory.Options opts 一起使用,该方法具有参数inSampleSize,您可以在其中设置图像的子采样。也可以使用参数inPreferredConfig来设置 RGB_565 而不是 ARGB_8888,以防您不需要图像的透明度。

于 2012-12-31T12:03:05.520 回答
0

正如堆栈跟踪所说,它导致 OutOfMemory 错误。由于帧具有更高的分辨率并且帧数也更多,所以它给出了这个例外。

于 2012-12-31T11:58:27.400 回答