2012-08-15 18 views
16

La única parte de mi aplicación que sigue siendo software renderizado 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 en la forma redonda.Android clipPath equivalente para hardware acelerado Ver

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

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

Respuesta

0

Se podría tratar de esto, aunque no estoy seguro de que se acelera el hardware:

en onCreate:

en OnLayout:

  • crear un mapa de bits del mismo tamaño que su punto de vista
  • llamar su círculo dentro de de su lienzo, en blanco, utilizando anti alias para un borde limpio

en onDraw:

  • dibujar el mapa de bits con el círculo blanco en el lienzo de pintura
  • Ahora, dibuja su mapa de bits dentro de su lienzo de pintura usando el bitmapPaint que creó en onCreate

El mapa de bits se dictarán en el interior sólo el círculo.

0

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

Aquí es un ejemplo de cómo cortar un círculo a partir de un mapa de bits fuente

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); 
1

Si usted tiene que utilizar clipPath se podía apagar la aceleración de hardware de la siguiente manera.

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

Y también puede controlar la aceleración de hardware entre las capas Aplicación, Actividad, Ventana y Vista. La información detallada se describe en este Hardware Acceleration article on Android Development web site.

Cuestiones relacionadas