versiones sistema pie operativo developer definicion caracteristicas android

pie - android sistema operativo



ClipPath de Android equivalente para hardware acelerado Ver (3)

La única parte de mi aplicación que aún está representada por software es la representación de una vista en la que necesito dibujar un mapa de bits redondo. Estoy usando clipPath para recortar el mapa de bits que necesito para renderizar a la forma redonda.

Entiendo que clipPath no es acelerado por hardware, pero estoy buscando un algoritmo que me permita proporcionar la funcionalidad equivalente utilizando la aceleración de hardware.

Específicamente, necesito crear una región de recorte de un mapa de bits de origen y hacer que se muestre en mi lienzo.


Puedes intentarlo, aunque no estoy seguro de que sea acelerado por hardware:

en onCreate:

en onLayout:

  • Crea un mapa de bits del mismo tamaño que tu vista.
  • dibuja tu círculo en el interior de su lienzo, en blanco, usando anti alias para un borde limpio

en onDraw:

  • Dibuja el mapa de bits con el círculo blanco en tu lienzo de pintura
  • ahora, dibuje su mapa de bits dentro de su lienzo de pintura utilizando el mapa de bits que ha creado en onCreate

El mapa de bits se debe representar solo dentro del círculo.


Si su mapa de bits no cambia mucho, recórtelo una vez a la forma en un nuevo mapa de bits y luego dibuje el mapa de bits recortado en su onDraw.

Aquí hay un ejemplo de cómo recortar un círculo desde un mapa de bits de origen

Bitmap bitmap = Bitmap.createBitmap(source.getWidth(), source.getHeight(), Bitmap.Config.ARGB_8888); Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG); Canvas canvas = new Canvas(bitmap); paint.setColor(Color.RED); // Draw your shape here canvas.drawCircle(cx, cy, radius, paint); paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); canvas.drawBitmap(sourceBitmap, 0, 0, paint);


Si tiene que usar clipPath, puede desactivar la aceleración de hardware como se muestra a continuación.

<application android:label="@string/application_name" android:hardwareAccelerated="false">

Y también podría controlar la aceleración de hardware entre las capas Aplicación, Actividad, Ventana y Vista. La información detallada se describe en este artículo sobre aceleración de hardware en el sitio web de desarrollo de Android .