2012-08-13 9 views

risposta

15

Dalla documentazione Android - protected void dispatchDraw (Canvas canvas):

Chiamato dal sorteggio per disegnare il punto di vista del bambino. Questo può essere sovrascritto dalle classi derivate per ottenere il controllo prima che i suoi figli vengano disegnati (ma dopo che è stata disegnata la propria vista).

+0

perché dispatchDraw (Canvas canvas) ??? possiamo usare onDraw (canvas canvas) invece ?? –

+4

Ecco dove dovresti fare il tuo disegno, sì. 'draw (Canvas canvas)' avvia il disegno; 'onDraw (Canvas canvas)' è dove il disegno ha luogo; 'dispatchDraw (Canvas canvas)' è ciò che dice ai bambini del 'ViewGroup' di essere disegnati. – Eric

2

Ad esempio, ViewGroup è il padre di Linear, Relative-, FrameLayout-, AbsoluteLayout. 1

Poiché la classe ViewGroup è astratta, la creazione diretta di un'istanza non è possibile.
È possibile utilizzare 1 da questa, con la funzione di:

dispatchDraw(Canvas canvas) 

Per ragioni sconosciute, le classi 1 non sarebbero disegnare con

onDraw(Canvas canvas) 

Disegnare con

dispatchDraw(Canvas canvas) 

è in questo Classes 1, possibile ed è divertente creare interfacce utente.

Sarebbe simile a questa:

///// public class MainActi estende MyLinearLayout. pubblico MainActi (Context con ... super (cont ...) MyLinearLayout estende LinearLayout

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

oppure si salta-back a disegnare con

onDraw(Canvas canvas) 

si estende nel MainActivity "Visualizza", oppure in una classe extern come questo:

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