Android View vs SurfaceView vs GLSurfaceView für 2D-Zeichnungs-App mit Zoomable Benutzeroberfläche

8

Ich plane, eine 2D-Zeichnungs-App mit einer zoombaren Benutzeroberfläche zu schreiben. Mit der App sollte der Benutzer in der Lage sein, gezeichnete Pfade (und natürlich die Benutzeroberfläche) zu transformieren und zu skalieren. Ich gehe davon aus, dass es bis zu 500 Pfade gleichzeitig geben wird. Jetzt frage ich mich, mit welcher Ansicht ich anfangen soll (View, SurfaceView oder GLSurfaceView), um eine akzeptable Leistung zu erzielen. Ich lese ein paar Posts [1-6] einschließlich des einmal in Android Entwickler Leitfaden und bin immer noch nicht 100% sicher, welche Ansicht zu verwenden.

Laut der Präsentation auf Google I / O 2009 ( Ссылка ) und eigenen Erfahrungen Leinwand (View and SurfaceView) doesn Bei mehr als 100 Pfaden scheint es nicht schnell genug zu sein.

Sieht jemand eine Möglichkeit bei der Implementierung der App mit Canvas oder ist OpenGL der Weg zu gehen?

[1] Android: Entscheidung zwischen SurfaceView und OpenGL (GLSurfaceView)

[2] SurfaceView oder GLSurfaceview?

[3] Unterschied zwischen SurfaceView und View?

[4] Ссылка

[5] Unterschied zwischen SurfaceView und ImageView

[6] Unterschied zwischen SurfaceView und GLSurfaceView in Android

    
Barnholdy 04.11.2014, 15:35
quelle

1 Antwort

2

Aufgrund Ihrer Leistungsbedenken müssen Sie Hardware-Rendering verwenden. Die Anzeigen werden immer dichter, so dass jedes Pixel in der Software langsamer wird.

Wenn Sie mit einem Canvas zeichnen möchten, müssen Sie eine benutzerdefinierte Ansicht mit Hardware rendern Beschleunigung aktiviert. Canvas Rendering auf einer Oberfläche wird immer mit Software gemacht.

SurfaceView und GLSurfaceView sind fast dasselbe; GLSurfaceView hat nur einige Hilfsfunktionen, die für Sie einen Teil des Housekeepings übernehmen. Sie können GLES zum Rendern auf SurfaceView und TextureView verwenden. In Grafika gibt es mehrere Beispiele dafür.

Wenn Sie wissen möchten , was unter läuft Sehen Sie sich die Grafikarchitektur auf Systemebene an.

Vielleicht möchten Sie die Verwendung einer Open-Source-2D-Game-Engine in Erwägung ziehen. Das wird mit der EGL-Einrichtung umgehen, sollte Code für GLES-Font-Rendering bereitstellen und so weiter.

    
fadden 05.11.2014 17:39
quelle