我加載一個位圖從資源,像這樣:加載資源的可變位
Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image);
我想要做的就是進行一些更改位圖前,它被吸引到主畫布在我繪製方法(因爲當它不會改變時,在我的主循環中重複大量繪圖似乎很浪費)。我有以下進行更改位圖:
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);
它避免了這個問題,但它有時會導致OutOfMemoryException異常,知道有什麼更好的方法來實現我想要的嗎?
複製內存裏,我不工作,如果它是原始圖像,我發現使用MappedByteBuffer的方式,我在這裏的博客上它:HTTP:// sudarnimalan。 blogspot.com/2011/09/android-convert-immutable-bitmap-into.html – 2011-09-15 05:06:13