3

我正在将逐帧动画绘制到画布上,我有大约 100 张用于执行此操作的图片(总共大约 1.5MB)。我开始这样做:

s000 = BitmapFactory.decodeResource(getResources(), R.drawable.s0);
s001 = BitmapFactory.decodeResource(getResources(), R.drawable.s1); ...etc...

到每个图像,然后将每个图像绘制到画布上:

c.drawBitmap(s000, X, Y, null);

制作动画。

问题是我收到此错误“OutOfMemoryError:位图大小超出 VM 预算”。我如何加载所有图片而不会出现此错误?1.5MB 是多少内存还是我有内存泄漏?我该怎么做才能修复内存泄漏?

非常感谢您的帮助。我是 android 的菜鸟,所以请你留下例子,而不仅仅是告诉我做一些我不会理解的事情:) 再次感谢

4

3 回答 3

2

为您绘制的每一帧尝试这样的操作:

s000 = BitmapFactory.decodeResource(getResources(), R.drawable.s0);
c.drawBitmap(s000, X, Y, null);
s000.recycle();
s000 = null;

这将在绘制框架后尝试释放内存。

编辑

myImgLen = 30;
Bitmap bitmap = null;
for (int i = 0; i < myImgLen; i++) {
    bitmap = BitmapFactory.decodeResource(getResources(), getResource‌​s().getIdentifier("s" + i, "drawable", getPackageName()));
    c.drawBitmap(bitmap, X, Y, null);
    bitmap.recycle();
    bitmap = null;
}
于 2012-07-05T10:32:38.667 回答
0

将图像存储到 res->drawable-xhdpi make 文件夹中 res 文件夹中。
有关更多信息,请参阅此链接http://developer.android.com/guide/practices/screens_support.html

于 2012-07-05T09:56:17.330 回答
0

也许图像的大小不正确。参考这个答案:Strange out of memory issue while loading an image to a Bitmap object

于 2012-07-05T09:58:01.780 回答