Sembra che tu voglia sperimentare con la grafica 2D - per questo, devi usare uno Canvas
. Puoi controllare il disegno della tela attraverso il metodo invalidate()
, che indica a Android di ridisegnare l'intero processo attivando il tuo metodo personalizzato onDraw()
. Si dice di non voler usare il file XML, ma questo è il modo più semplice per inserire un Canvas: non è necessario definirne il contenuto nel file XML, ma semplicemente dire al file di layout che è lì. Un modo semplice ma potente per inserire una tela nell'applicazione è personalizzare una vista. Ad esempio, includere nel file XML un elemento <your.package.CustomView android:.../>
. Quindi dichiarare la classe CustomView extends View
. Qualsiasi tipo di disegno che si desidera eseguire, inserire il metodo onDraw().
Ad esempio, per disegnare un rettangolo, fare qualcosa di simile.
//First you define a colour for the outline of your rectangle
rectanglePaint = new Paint();
rectanglePaint.setARGB(255, 255, 0, 0);
rectanglePaint.setStrokeWidth(2);
rectanglePaint.setStyle(Style.STROKE);
//Then create yourself a Rectangle
Rect rectangle = new Rect(left, top, right, bottom) //in pixels
//And here's a sample onDraw()
@Override
public void onDraw(Canvas canvas){
rectangle.offset(2, 2);
canvas.drawRect(rectangle, rectanglePaint);
}
Ogni volta invalidate() viene chiamato dal programma, la vista sarà ridisegnata e il rettangolo spostato 2px verso il basso e verso destra. Nota: il ridisegno avviene solo con il thread principale è 'waiting'. In altre parole, se si ha una chiamata di ciclo invalida più volte, la vista non verrà disegnata fino a quando il ciclo non termina. Puoi aggirare questo, ma questo aggiunge più complicazioni. Per un esempio di come è fatto, guarda il gioco di esempio LunarLander di Google: è un semplice gioco che dimostra una visualizzazione personalizzata, 2 thread e come implementare l'animazione continua.
fonte
2010-03-29 16:24:29
Funziona magnificamente, grazie! –