studio programacion herramientas fundamentos con avanzado aplicaciones android bitmap android-canvas

programacion - convertir un lienzo en una imagen de mapa de bits en Android



manual de android en pdf (4)

Estoy tratando de desarrollar una aplicación en el lienzo, estoy dibujando un mapa de bits en el lienzo. Después de dibujar, estoy tratando de convertirlo en una imagen de mapa de bits.

¿alguien puede darme una sugerencia?

gracias de antemano.


El consejo depende de lo que estás tratando de hacer.

Si le preocupa que sus controles tarden mucho tiempo en dibujarse, y desea dibujar en un mapa de bits para poder ajustar el mapa de bits en lugar de volverlo a dibujar a través de un lienzo, entonces no querrá adivinar la plataforma. - los controles almacenan automáticamente en caché su dibujo en mapas de bits temporales, y estos incluso pueden ser extraídos del control usando getDrawingCache()

Si desea dibujar utilizando un lienzo en un mapa de bits, la receta habitual es:

  1. Cree un mapa de bits del tamaño correcto usando Bitmap.createBitmap()
  2. Cree una instancia de lienzo que señale que este mapa de bits utiliza el constructor Canvas(Bitmap)
  3. Dibuja en el lienzo
  4. Usa el mapa de bits

Entonces creas un nuevo Bitmap , por ejemplo:

Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 )

con width y height iguales a su lienzo.

A continuación, use canvas.setBitmap(myBitmap) , pero no drawBitmap() .

Después de llamar a setBitmap , todo lo que dibuja en el lienzo es, de hecho, dibujando en su myBitmap siguiendo el código de ejemplo que he ilustrado.

Editar :

No puede crear un mapa de bits directamente, como por ejemplo:

Bitmap myBitmap = new Bitmap( (int)Width, (int)Height, Config.RGB_565 );

Debe usar en su lugar:

Bitmap myBitmap = Bitmap.createBitmap( (int)Width, (int)Height, Config.RGB_565 );


Otro ejemplo:

public Bitmap getBitmapNews(int item , boolean selected, int numbernews){ Bitmap bitmap; if(selected) bitmap=mBitmapDown[item].copy(Config.ARGB_8888, true); else bitmap=mBitmapUp[item].copy(Config.ARGB_8888, true); Canvas canvas = new Canvas(bitmap); if(numbernews<10){ canvas.drawBitmap(mNotiNews[numbernews],0,0,null); }else{ canvas.drawBitmap(mNotiNews[0],0,0,null); } return bitmap; }


Los siguientes son los pasos para convertir de lienzo a mapa de bits y almacenarlo en la galería o carpeta específica.

Nota: asegúrese de haber otorgado permiso de WRITE_EXTERNAL_STORAGE

activity_main.xml

<LinearLayout android:id="@+id/linearLayout" android:orientation="horizontal" android:layout_margin="10dp" android:layout_width="wrap_content" android:layout_height="wrap_content"> <DrawingView android:id="@+id/drawingView" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout>

MainActivity.java

  1. Crear referencia de diseño principal

    LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linearLayout);

  2. Para almacenarlo en la galería

    final String imagename = UUID.randomUUID().toString() + ".png"; MediaStore.Images.Media.insertImage(getContentResolver(), linearLayout .getDrawingCache(), imagename, "drawing");

  3. Para convertir en mapa de bits

    linearLayout.setDrawingCacheEnabled(true); linearLayout.buildDrawingCache(); Bitmap bitmap = Bitmap.createBitmap(linearLayout.getDrawingCache());