Effiziente 2D-Zeichnung in Android

Den ich gesucht habe für ein paar Stunden und nicht in der Lage zu finden, eine präzise bestimmte andswer auf meine Frage. Ich habe eine Anwendung, wo ich zu ziehen, ein Sport-Spielfeld (einschließlich aller pitch-Linien) auf dem Bildschirm aus. So weit, ich habe es erweitert die SurfaceView und ziemlich viel kopiert, der rest der LunarLander-demo als gut.
Alle Daten, die die Anwendung erforderlich, zeichnen Sie die Tonhöhe, um die richtigen Maße, wird empfangen von einer Steckdose, die funktioniert auch. Aber in der minute in der onDraw () - Funktion, ich bin Zeichnung alle Linien in jedem frame, die ist, dass eine relativ langsame framerate im emulator (z.B. ~10fps). Hier ist meine onDraw () - Funktion:

@Override
public void onDraw(Canvas canvas) {
canvas.drawARGB(255,0,144,0);
canvas.drawLine(canvas, getFirstLine(), mPaint);
canvas.drawRect(canvas, getFirstRect(), mPaint);
canvas.drawRect(canvas, getSecondRect(), mPaint);
...
canvas.drawRect(canvas, getSecondRect(), mPaint);
drawAnimatedObjects();
}

Ich dann Kreise zeichnen und die verschiedenen Positionen, die über diesen hintergrund. Meine Frage ist, wie kann ich diese effizienter zu gestalten? Gibt es eine Möglichkeit, dass ich ziehen die Linien auf der Anwendung Initialisierung und nicht neu zeichnen Sie jeden frame?

Vielen Dank für jede Hilfe.

  • OpenGL ES führt viel besser als mit der Leinwand. Wenn Sie diesen Weg gehen, es lohnt sich. Es gibt einige 2d-Zeichnung demos in der API-Demos-Projekt auch.
  • Haben Sie getestet, auf einem echten Gerät? Emulator die Grafik-performance ist nicht repräsentativ für das, was Sie sehen, auf echten Geräten.
Schreibe einen Kommentar