2012-08-13 9 views

Respuesta

15

De la documentación Android - protected void dispatchDraw (Canvas canvas):

Llamado por sorteo para dibujar las vistas secundarias. Esto puede ser anulado por las clases derivadas para ganar control justo antes de que sus hijos sean dibujados (pero después de que su propia vista haya sido dibujada).

+0

por qué dispatchDraw (Canvas canvas) ??? ¿podemos usar onDraw (Canvas canvas) en su lugar? –

+4

Ahí es donde deberías hacer tu dibujo, sí. 'draw (Canvas canvas)' inicia el dibujo; 'onDraw (Canvas canvas)' es donde se realiza el dibujo; 'dispatchDraw (Canvas canvas)' es lo que le dice a los niños del 'ViewGroup' que se dibujará. – Eric

2

Por ejemplo, ViewGroup es el elemento primario de Linear-, Relative-, FrameLayout-, AbsoluteLayout. 1

Como la clase ViewGroup es abstracta, no es posible crear directamente una instancia.
Puede utilizar 1 de esta, con la función:

dispatchDraw(Canvas canvas) 

Por razones desconocidas, las clases 1 no dibujar con

onDraw(Canvas canvas) 

Dibujo con

dispatchDraw(Canvas canvas) 

es en esta clase 1 es posible y es divertido crear interfaces de usuario.

Se vería así:

///// clase pública se extiende MainActi MyLinearLayout. pública MainActi (Contexto con ... super (cont ...) MyLinearLayout extiende LinearLayout

@Override protected void dispatchDraw (Lona) { canvas.drawColor (Color.YELLOW); ... ///

o se salta-volver a dibujar con

onDraw(Canvas canvas) 

se extiende en la MainActivity "Ver" o consulte en una clase extern así:

MyMelIsDrawing extends View 
    onDraw(Canvas canvas) 
     //now draw...