帧动画失败超过5帧 - 240dpi

时间:2012-12-31 11:31:00

标签: android animation frame

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

谢谢, 西蒙

3 个答案:

答案 0 :(得分:1)

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

  

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

更多地了解here。更多关于如何有效加载大位图的信息here

答案 1 :(得分:1)

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

您可以使用方法 decodeResource 和BitmapFactory.Options选项,其中包含参数inSampleSize,您可以在其中设置图像的子采样。如果您不需要图像透明度,参数inPreferredConfig也可用于设置RGB_565而不是ARGB_8888。

答案 2 :(得分:0)

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