2012-08-24 4 views
6

Sto lavorando su una speciale interfaccia utente in tipo -Sandwich Android, un piccolo GalleryView su GLSurfaceView (con aree trasparenti) in cima sfondo Vista (LinearLayout + alcuni widget). Questo è come sto pensando di sua creazione:Come aggiungere GLSurfaceView tra le viste Android?

<User> 

vista dall'alto
--- GalleryView
|
--- GLSurfaceView (con aree trasparenti)
|
--- LinearLayout (con widget)
vista inferiore

In modalità normale GLSurfaceView hanno sfondo nero su aree trasparenti, in modo da non posso vedere lo strato inferiore, ma quando uso setZOrderOnTop (true); Riesco a vedere il livello inferiore, ma anche il livello superiore (galleria) va oltre la vista Glsurface. Come posso ottenere una vista desiderata come nello schema?

codice XML fittizio Esempio (con AnalogClock invece di GalleryView):

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/RelativeLayout1" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#920000" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:id="@+id/LinearLayout1" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="bottom|right" > 

     <AnalogClock 
      android:id="@+id/analogClock2" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" /> 
    </LinearLayout> 

    <com.test.CustomGlView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/gl_view" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 

    <AnalogClock 
     android:id="@+id/Gallery_dummyview" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" /> 

</RelativeLayout> 
+0

non ho ottenuto esattamente quello che volete da noi? Vuoi aiuto per scrivere il layout XML? –

+2

Penso che il problema non sia nel layout ma nel settaggio GLSurfaceView. Di default non mostra un'area trasparente, non importa quello che faccio, fino a quando non sono setZOrderOnTop (vero) ;, ma questa superficie impostazione mettere tutta la strada in alto ... così come avere la stessa composizione del layout e hanno un'area trasparente nella Glsurfaceview? – prot0n

risposta

2

Non si può fare questo.

superficie del GLSurfaceView è su un livello di composizione separata dalla UI View-based. Può essere sopra le Viste o sotto di loro, ma non può apparire a sandwich tra gli elementi Vista.

È possibile utilizzare un TextureView (API 14+) invece. Ha una superficie su cui eseguire il rendering, ma è composta sul livello View dall'app, quindi il layout funziona come qualsiasi altra vista. È necessario fornire la propria configurazione EGL e la gestione dei thread per GLES invece di fare affidamento su cosa c'è in GLSurfaceView, ma è possibile trovare esempi in Grafika.