Android:如何使用大量的位图?

时间:2012-07-05 09:49:19

标签: android canvas bitmap size out-of-memory

我正在逐帧画动画到画布上,我有大约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还是内存泄漏?我该怎么做才能解决内存泄漏问题?

非常感谢你的帮助。我是机器人的诺布,所以请你留下例子而不只是告诉我做一些我不会理解的事情:)再次感谢

3 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分:0)

将图像存储在res文件夹中的res-&gt; drawable-xhdpi make文件夹中 有关详细信息,请参阅此链接http://developer.android.com/guide/practices/screens_support.html

答案 2 :(得分:0)

图像的大小可能不正确。请参阅此答案:Strange out of memory issue while loading an image to a Bitmap object