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.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie auf jeden Fall Zwischenspeichern jede Leinwand Zeichnung, die wird sich nicht ändern, um eine bitmap, bei der Initialisierung, und dann zeichnen Sie die bitmap in onDraw(). Das wird helfen Rendern mal eine Menge. So etwas wie:
Ist Ihr Sportplatz statische oder tut, ist das scrollen über den Bildschirm?
Wenn es statisch ist, sollten Sie überlegen, zu bauen es einmal und speichern Sie es als ein Bild, das als neu gezeichnet werden, jedes mal.
Eine andere Sache: Der emulator ist sehr langsam im Vergleich zu modernen Geräten. Sie sollten überprüfen, Ihre Leistung mindestens auf G1 oder höher, um zu überprüfen, die echte Leistung.