empecé una aplicación para Android OpenGL y tengo las siguientes clases:Android glSurfaceView con superposición utilizando XML/Java
class A extends Activity
class B extends GlSurfaceView implements Renderer
Cuando la clase de un onCreate se llama, se crea un objeto de la clase de tipo B y llama:
setContentView(Bobject)
Hasta ahora funciona y pasé unos días en él.
Ahora quería agregar botones a mi aplicación y encontré el ejemplo de SurfaceViewOverlay. Eso usa algo de XML para crear una jerarquía de vista. Quería crear algo muy similar a lo simplemente cortar y pegar el código 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">
...
Ahora teniendo en cuenta mi jerarquía de clases original, ¿cómo iba a inicializar mis puntos de vista? ¿Qué debo escribir en onCreate() de mi clase A?
He intentado utilizar:
Bobject = new B(this);
GLSurfaceView glSurfaceView =
(GLSurfaceView) findViewById(R.id.glsurfaceview);
glSurfaceView.setRenderer(Bobject);
y lo hace dibujar los botones y la vista GL en la pantalla, pero la vista GL es incapaz de tomar en cualquier entrada de los grifos/clics.
Esto es probablemente debido a la Bobject onTouchEvent() no se llama, ya que sólo está siendo utilizado como:
Renderer
y no una:
glSurfaceView
objeto.
En lugar del código anterior, lo que realmente quiero es que Bobject reemplace glSurfaceView. Pero no sé cómo hacer eso. Cuando encuentro ViewById(), parece que glSurfaceView ya está creado por el momento. ¿Cómo puedo pedirle que use un objeto de tipo B para la vista GL?
Disculpe las faltas de los novatos. Completamente nuevo para Android.
EDIT: También intentado esto:
También trató lo siguiente: En mi archivo XML, he cambiado el GLSurfaceView a:
<com.bla.bla.B
android:id="@+id/glsurfaceview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
Y en mi Un constructor de la clase que estoy llamando:
// This returns null
Bobject = (B) findViewById(R.id.glsurfaceview);
// And this suspends the application. :(
setContentView(R.layout.surface_view_overlay);
¿Cómo debo usar mi clase personalizada que se extiende glSurfaceView en mi archivo XML/actividad?
Estoy atascado con el mismo problema y no pude encontrar una aplicación completa que demuestre esto. ¿Alguien puede mostrar alguna aplicación de ejemplo? Parece que no puedo encontrar este famoso ejemplo SurfaceOverlayView de muestras de Android en cualquier lugar. Gracias por adelantado. – rgngl