Zacząłem aplikacji Android OpenGL i mam następujących klas:Android glSurfaceView z przedrukiem z wykorzystaniem XML/Java
class A extends Activity
class B extends GlSurfaceView implements Renderer
Kiedy klasa A za onCreate nazywa, tworzy obiekt klasy typu B i wzywa:
Na razie działa i spędziłem na nim kilka dni.
Teraz chciałem dodać przyciski do mojej aplikacji i znalazłem przykład SurfaceViewOverlay. To wykorzystuje trochę XML do stworzenia hierarchii widoku. Chciałem stworzyć coś bardzo podobnego do I po prostu wyciąć i wkleić kod XML:
<android.opengl.GLSurfaceView android:id="@+id/glsurfaceview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout android:id="@+id/hidecontainer"
android:orientation="vertical"
android:visibility="gone"
android:background="@drawable/translucent_background"
android:gravity="center"
android:layout_width="match_parent"
android:layout_height="match_parent">
...
Teraz pamiętając mój oryginalny klasy hierarchię, w jaki sposób zainicjować moje poglądy? Co powinienem napisać w onCreate() mojej klasie A?
Próbowałem za pomocą:
Bobject = new B(this);
GLSurfaceView glSurfaceView =
(GLSurfaceView) findViewById(R.id.glsurfaceview);
glSurfaceView.setRenderer(Bobject);
I robi rysować przycisków i widok GL na ekranie, ale widok GL nie jest w stanie podjąć w dowolnym wejściem z kranów/kliknięć.
Jest to prawdopodobne, ponieważ Bobject za onTouchEvent() nie jest wywoływana jak to jest tylko używany jako:
Renderer
a nie:
glSurfaceView
przedmiot.
Zamiast powyższego kodu, naprawdę chcę, aby Bobject zastąpił glSurfaceView. Ale nie wiem, jak to zrobić. Kiedy robię findViewById(), wydaje się, że glSurfaceView jest już utworzony na razie. Jak mogę poprosić go o użycie obiektu typu B do widoku GL?
Przepraszam za błędy każdego początkującego. Zupełnie nowy na Androida.
EDIT: Próbowałem też tak:
Próbowałem również następujący: W moim pliku XML, zmieniłem GLSurfaceView do:
<com.bla.bla.B
android:id="@+id/glsurfaceview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
I w moim klasy A konstruktora Wołam:
// This returns null
Bobject = (B) findViewById(R.id.glsurfaceview);
// And this suspends the application. :(
setContentView(R.layout.surface_view_overlay);
Jak używać niestandardowej klasy, która rozszerza glSurfaceView w moim pliku XML/Activity?
Utknąłem z tym samym problemem i nie mogłem znaleźć całej aplikacji demonstrującej to. Czy ktoś może pokazać przykładową aplikację? Nie mogę znaleźć tego słynnego przykładu SurfaceOverlayView z próbek Androida w dowolnym miejscu. Z góry dziękuję. – rgngl