ho iniziato un'applicazione OpenGL Android e ho le seguenti classi:Android glSurfaceView con overlay usando XML/Java
class A extends Activity
class B extends GlSurfaceView implements Renderer
Quando la classe di un onCreate si chiama, si crea un oggetto di tipo classe B e chiama:
setContentView(Bobject)
Finora funziona e ci ho dedicato alcuni giorni.
Ora volevo aggiungere pulsanti alla mia applicazione e ho trovato l'esempio di SurfaceViewOverlay. Questo utilizza un codice XML per creare una gerarchia di viste. Ho voluto creare qualcosa di molto simile a Ho semplicemente tagliare e incollare il codice 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">
...
Ora tenendo a mente la mia gerarchia di classi originale, come avrei inizializzare le mie opinioni? Cosa dovrei scrivere su onCreate() della mia classe A?
Ho provato utilizzando:
Bobject = new B(this);
GLSurfaceView glSurfaceView =
(GLSurfaceView) findViewById(R.id.glsurfaceview);
glSurfaceView.setRenderer(Bobject);
e lo fa disegnare i pulsanti e la vista GL sullo schermo, ma la vista GL è in grado di prendere in qualsiasi input da rubinetti/clic.
Questo è dovuto probabilmente al fatto di Bobject onTouchEvent() non è chiamato come esso è utilizzato solo come:
Renderer
e non una:
glSurfaceView
oggetto.
Invece del codice precedente, quello che voglio veramente è che Bobject sostituisca glSurfaceView. Ma non so come farlo. Quando trovoViewById(), sembra che glSurfaceView sia già stato creato per ora. Come posso chiederle di usare un oggetto di tipo B per la vista GL?
Ci scusiamo per eventuali nuovi errori. Completamente nuovo per Android.
EDIT: Ho provato anche questo:
Ho anche provato il seguente: Nel mio file XML, ho cambiato il GLSurfaceView a:
<com.bla.bla.B
android:id="@+id/glsurfaceview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
E nella mia un costruttore della classe che io chiamo:
// This returns null
Bobject = (B) findViewById(R.id.glsurfaceview);
// And this suspends the application. :(
setContentView(R.layout.surface_view_overlay);
Come dovrei usare la mia classe personalizzata che estende glSurfaceView nel mio file/attività XML?
Sono bloccato con lo stesso problema e non è riuscito a trovare un'intera applicazione per dimostrare questa cosa. Qualcuno può mostrare qualche applicazione di esempio? Non riesco a trovare questo famoso esempio di SurfaceOverlayView da campioni Android ovunque. Grazie in anticipo. – rgngl