我正在逐帧画动画到画布上,我有大约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还是内存泄漏?我该怎么做才能解决内存泄漏问题?
非常感谢你的帮助。我是机器人的诺布,所以请你留下例子而不只是告诉我做一些我不会理解的事情:)再次感谢
答案 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(), getResources().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。