2010-05-24 13 views
10

Ich verwende OpenGL, um eine Spielansicht in meiner Android-Anwendung zu rendern. Das Spiel ist rundenbasiert und ich möchte einige Buttons zur Oberfläche hinzufügen. Ich würde lieber standardmäßige Android-Widgets verwenden, die in einem XML-generierten Layout strukturiert sind (oder, wenn es sein muss, in einem fest codierten Layout) und die OpenGL-Ansicht in ein eigenes Fenster als Teil dieses Layouts einfügen.OpenGL und Layouts

So in Bezug auf diese, habe ich drei Fragen:

1: Ist so etwas möglich? Ich habe ein paar halbherzige Versuche unternommen, aber bisher hatte ich kein Glück.

2: Ist so etwas ratsam? Führt es beispielsweise zu einer erheblichen Leistungseinbuße gegenüber OpenGL-basierten Homebrew-Widgets?

3: Ist es möglich, bestimmte Argumente an Instanzen zu übergeben, die in XML-Layouts erstellt wurden? Zum Beispiel hat meine aktuelle OpenGL-Ansicht drei Argumente in ihrem Konstruktor; ist es irgendwie möglich für mich, diesen bestimmten Konstruktor mit bestimmten Parametern aufzurufen, wenn es Teil eines Layouts ist?

Antwort

14

Nicht nur sind diese Dinge möglich, sie sind an der Tagesordnung! Die OpenGL SurfaceView ist nur eine weitere Ansicht in Android und Sie können alles, was Sie wollen über alles schichten. In der App, die ich erstelle, verwenden wir OpenGL, um interessante Hintergründe zu rendern und das gesamte Menü darüber zu überlagern. Es gibt keine wesentlichen Leistungsbedenken mehr, die Sie mit OpenGL selbst haben würden. Sie können XML-Layouts verwenden oder alle Ihre ui-Elemente programmgesteuert generieren oder eine Kombination aus beiden vornehmen. Selbst wenn Sie XML zur Instanziierung Ihrer Benutzerschnittstelle verwenden möchten, können Sie auf die Elemente zugreifen und sie basierend auf dem Status bearbeiten.

+0

Allright, danke. Bisher konnte ich keine Beispiele dafür finden, aber ich werde jetzt härter schauen, da ich weiß, dass es keine Sackgasse ist. – Hnefi

+0

@CaseyB: Ich möchte das Layout in meiner LiveWallpaper App mit OpenGL verwenden, also ist es möglich? –

+0

Ich habe noch nie ein Live Wallpaper gemacht, aber ich glaube, dass es ein anderes System verwendet und Sie müssen es mit RenderScript programmieren. – CaseyB