Domanda

Ciao a tutti,

Sono appena iniziato con lo sviluppo per Android. Sto cercando di porto uno dei miei applicazioni per iPhone, ma sono specie di a corto di come disegnare una vista in fase di esecuzione (un punto di vista non dichiarata nel XML). Fondamentalmente, voglio disegnare un semplice rettangolo, ma poi in grado di manipolare il suo telaio dopo essere stato disegnato.

Scusate se questo è un molto, molto semplice domanda, ma io non riesco a trovare un equivalente per l'iPhone SDK qui.

Grazie in anticipo!

È stato utile?

Soluzione

Sembra che si vuole sperimentare con grafica 2D - per questo, è necessario utilizzare un Canvas. È possibile controllare il disegno della tela attraverso il metodo invalidate(), che racconta Android per ridisegnare il tutto innescando il metodo onDraw() personalizzato. Non parlare di voler usare il file XML, ma che è il modo più semplice per mettere in una tela - non c'è bisogno di definire il contenuto nel file XML, ma semplicemente dire al file di layout che è lì. Un modo potente ma semplice da mettere una tela nella vostra applicazione è quello di personalizzare una visualizzazione. Per esempio, includere nel file di un elemento <your.package.CustomView android:.../> tuo XML. Poi dichiarare la classe CustomView extends View. Qualsiasi tipo di disegno che si vuole fare, mettere nel 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 verifica solo con il filo principale è 'attesa'. In altre parole, se si dispone di un ciclo chiamata a invalidate più volte, la vista non sarà effettivamente disegnato fino al termine del ciclo. È possibile aggirare il problema, ma che aggiunge ulteriori complicazioni. Per un esempio di come questo è fatto, guarda l'esempio di gioco LunarLander da Google - è un gioco semplice che dimostra una visualizzazione personalizzata, 2 fili, e come implementare l'animazione continua

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top