La idea es pasar una imagen dibujada en un lienzo de una actividad A a otra actividad B (como Bitmap). Como no he encontrado la solución explícita en la web, he decidido publicarla y evitar pérdidas de tiempo en el futuro.
En la actividad A vamos a tener el lienzo. Primero creamos en el fichero XML correspondiente a esta actividad nuestro botón de "Aceptar", o "Enviar". Después ponemos en las propiedades del lienzo el nombre de la siguiente función en la pestaña "onClick". Quedaría así:
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="lanzarTexto"
android:text="@string/aceptar" />
Ahora volvemos a nuestra actividad A. En ella, meteremos el siguiente código:
public void lanzarTexto(View v) {
drawView.setDrawingCacheEnabled(true); //Para poder obtener la imagen del lienzo
Bitmap bitmap = drawView.getDrawingCache(); //Cojo el lienzo y lo paso a formato Bitmap
Bundle b = new Bundle(); //Creo un contenedor Bundle
Intent i = new Intent(this, Texto.class); //Intent para pasar a la actividad Texto cuando pulse el botón
ByteArrayOutputStream bs = new ByteArrayOutputStream(); //Creo un ByteArray y convierto el Bitmap a este formato
bitmap.compress(Bitmap.CompressFormat.PNG, 50, bs);
b.putByteArray("nombre", bs.toByteArray()); //Pongo el ByteArray en el Bundle con el id "nombre"
i.putExtras(b); //y lo envío cuando pulse el botón
startActivity(i);
}
Ya sólo queda recibir la imagen de la actividad y meterla en nuestro ImageView. Abrimos la actividad B, y dentro del método onCreate, incorporamos el siguiente código:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_texto);
//RECIBIR IMAGEN DESDE MainActivity
//Desde esta actividad, recibo el lienzo en formato ByteArray desde la actividad MainActivity con el id "nombre" (lo recibo en un contenedor bundle)
// y decodifico a formato Bitmap. Ese Bitmap lo llevo a mi botón ImageView llamado imagebtn1
Bundle parametros = this.getIntent().getExtras();
ImageView previewThumbnail=(ImageView) findViewById(R.id.imagebtn1);
Bitmap b = BitmapFactory.decodeByteArray(parametros.getByteArray("nombre"),0,parametros.getByteArray("nombre").length);
previewThumbnail.setImageBitmap(b);
}
* El imageView que crearemos en el XML de la actividad B debe llamarse imagebtn1.
Con esto, ya debe funcionar. Cuando pasamos a la actividad B, va a coger automáticamente la imagen de la actividad A.
No hay comentarios:
Publicar un comentario