studio programacion herramientas fundamentos con avanzado aplicaciones android bitmap out-of-memory android-canvas mutable

programacion - manual de android en pdf



Cargando un recurso a un mapa de bits mutable (4)

Estoy cargando un mapa de bits de un recurso como ese:

Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image);

Lo que quiero hacer es hacer algunos cambios en el mapa de bits antes de que se dibuje en el lienzo principal en mi método de dibujo (ya que parece un desperdicio repetir un montón de dibujo en mi ciclo principal cuando no va a cambiar). Estoy haciendo los cambios en el mapa de bits con lo siguiente:

Canvas c = new Canvas(mBackground); c.drawARGB(...); // etc

Así que, naturalmente, tengo una excepción

java.lang.IllegalStateException: Immutable bitmap passed to Canvas constructor

Para evitar eso, hice una copia del mapa de bits para que sea mutable

Bitmap mBackground = BitmapFactory.decodeResource(res,R.drawable.image).copy(Bitmap.Config.ARGB_8888, true);

Que evitar el problema sin embargo, a veces causa OutOfMemoryExceptions, ¿conozco alguna forma mejor de lograr lo que quiero?




Será mejor que use RapidDecoder .

import rapid.decoder.BitmapDecoder; Bitmap mBackground = BitmapDecoder.from(res, R.drawable.image) .mutable().decode();

Funciona para API nivel 8.


en caso de que necesites manejar todos los niveles de API, echa un vistazo a esta publicación:

https://.com/a/16314940/878126