Criar um bitmap vazio e desenhar através da tela no Android


Respostas:


197

Isso provavelmente é mais simples do que você está pensando:

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

Aqui está uma série de tutoriais que encontrei sobre o tema: Desenhando com a série Canvas


Se eu criar isso em uma classe separada, como faria referência ao bitmap em outra classe. Por exemplo: Bitmap text = BitmapFactory.decodeResource (mContext.getResources (), O que colocar aqui?); Eu preciso de um textView em um papel de parede ao vivo opengl. Agradecemos antecipadamente
Steve C.

Olá @bigstones, estou seguindo seu código para criar bitmap em onSizeChanged (), quando estou criando bitmap estou recebendo OutOfMemoryError, consulte este stackoverflow.com/questions/24303759/…
user123456

Como isso pode ser feito em outro segmento durante o uso de SurfaceView?
Zach H

-3

Não use Bitmap.Config.ARGB_8888

Em vez disso, use 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 pode levar você a problemas de OutOfMemory ao lidar com mais bitmaps ou bitmaps grandes. Ou melhor ainda, tente evitar o uso da opção ARGB em si.


12
ARGB_4444 está obsoleto agora ( developer.android.com/reference/android/graphics/… )
Allen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.