Crear un mapa de bits vacío y dibujar a través de un lienzo en Android


Respuestas:


196

Probablemente esto sea más simple de lo que piensa:

int w = WIDTH_PX, h = HEIGHT_PX;

Bitmap.Config conf = Bitmap.Config.ARGB_8888; // see other conf types
Bitmap bmp = Bitmap.createBitmap(w, h, conf); // this creates a MUTABLE bitmap
Canvas canvas = new Canvas(bmp);

// ready to draw on that bitmap through that canvas

Aquí hay una serie de tutoriales que encontré sobre el tema: Dibujar con la serie Canvas


Si creo eso dentro de una clase separada, ¿cómo haría referencia al mapa de bits en otra clase? Por ejemplo: Bitmap text = BitmapFactory.decodeResource (mContext.getResources (), ¿Qué poner aquí?); Necesito un textView dentro de un fondo de pantalla en vivo de opengl. Gracias de antemano
Steve C.

Hola @bigstones, estoy siguiendo su código para crear un mapa de bits en onSizeChanged () cuando estoy creando un mapa de bits. Obtengo OutOfMemoryError, consulte este stackoverflow.com/questions/24303759/…
user123456

¿Cómo se puede hacer esto en otro hilo mientras se usa SurfaceView?
Zach H

-3

No utilice Bitmap.Config.ARGB_8888

En su lugar, utilice int w = WIDTH_PX, h = HEIGHT_PX;

Bitmap.Config conf = Bitmap.Config.ARGB_4444; // see other conf types
Bitmap bmp = Bitmap.createBitmap(w, h, conf); // this creates a MUTABLE bitmap
Canvas canvas = new Canvas(bmp);

// ready to draw on that bitmap through that canvas

ARGB_8888 puede llevarlo a problemas de OutOfMemory cuando se trata de más mapas de bits o mapas de bits grandes. O mejor aún, intente evitar el uso de la opción ARGB en sí.


12
ARGB_4444 está obsoleto ahora ( developer.android.com/reference/android/graphics/… )
Allen
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.