2011-07-13 15 views
9

Cuando quiero dibujar un BitmapDrawable a un lienzo en Android, hay dos posibilidades que hacen lo mismo y no sé cuál de ellos prefieren:Android: ¿diferencia entre canvas.drawBitmap y BitmapDrawable.draw?

  1. Usando canvas.drawBitmap() y extraer el Mapa de bits del dibujable usando getBitmap()

  2. Utilizando drawable.draw (canvas), pasando el lienzo como un argumento al dibujable.

Estoy usando la primera opción ahora, pero parece completamente arbitrario ya que no veo ninguna diferencia.

Gracias por sus respuestas

Respuesta

9

Nunca hacen la opción número 1 de la manera que lo hace. En lugar de crear un mapa de bits de un dibujante cada vez que desee dibujarlo, cree un mapa de bits en primer lugar. Es decir, no cree un Drawable si va a dibujar un mapa de bits. Cree un mapa de bits como este:

mBitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.myImage); 
mBitmap = Bitmap.createScaledBitmap(mBitmap, width, height, true); 

Y esto es algo que hace solo una vez. Después de eso, simplemente dibuja como lo haces (canvas.drawbitmap()).

En cuanto a la opción número 2, lo está haciendo correctamente.

Ahora, hay algunas diferencias. La opción 1 es más rápida de dibujar y generalmente es útil para imágenes de fondo. Hay un cambio significativo en FPS dependiendo de si dibuja un mapa de bits o drawable. Los mapas de bits son más rápidos.

La opción 2 es el camino a seguir si necesita cosas como escalar, mover y otros tipos de manipulaciones de la imagen. No tan rápido, pero no hay otra opción si quieres hacer cualquiera de esas cosas que acabo de mencionar.

Espero que esto ayude!

+0

Gracias por su respuesta, esto tiene sentido :) – Sven

Cuestiones relacionadas