【发布时间】:2011-04-11 05:16:54
【问题描述】:
我正在从这样的资源中加载位图:
Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image);
我想要做的是在位图被我的 draw 方法绘制到主画布之前对位图进行一些更改(因为在我的主循环中重复大量绘图似乎很浪费它不会改变)。我正在使用以下内容对位图进行更改:
Canvas c = new Canvas(mBackground);
c.drawARGB(...); // etc
所以我自然会遇到异常
java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor
所以为了避免我制作了位图的副本,以便它是可变的
Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image).copy(Bitmap.Config.ARGB_8888, true);
这避免了这个问题,但它有时会导致 OutOfMemoryExceptions,知道有什么更好的方法来实现我想要的吗?
【问题讨论】:
标签: android bitmap out-of-memory android-canvas mutable