Bonjour à tous, je veux rendre ma vue DrawingSurface transparente. j'ai essayé beaucoup de choses mais ça ne marche pas.
Voici mon code xml pour rendre ma vue de surface transparente
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:orientation="vertical" >
<FrameLayout
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" >
<ImageView
Android:id="@+id/imageView1"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:src="@drawable/icon" >
</ImageView>
<LinearLayout
Android:id="@+id/linearLayout1"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent"
Android:background="#00000000" >
<codewalla.Android.drawings.DrawingSurface
Android:id="@+id/drawingSurface"
Android:layout_width="fill_parent"
Android:layout_height="fill_parent" >
</codewalla.Android.drawings.DrawingSurface>
</LinearLayout>
</FrameLayout>
<LinearLayout
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="horizontal" >
<Button
Android:id="@+id/colorRedBtn"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_weight="10"
Android:onClick="onClick"
Android:text="R" />
<Button
Android:id="@+id/colorBlueBtn"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_weight="10"
Android:onClick="onClick"
Android:text="G" />
<Button
Android:id="@+id/colorGreenBtn"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_weight="10"
Android:onClick="onClick"
Android:text="B" />
<Button
Android:id="@+id/undoBtn"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:layout_weight="10"
Android:onClick="onClick"
Android:text="U" />
<Button
Android:id="@+id/redoBtn"
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:layout_weight="10"
Android:onClick="onClick"
Android:text="R" />
</LinearLayout>
</RelativeLayout>
Essayez ceci dans le constructeur:
SurfaceView sfvTrack = (SurfaceView)findViewById(R.id.sfvTrack);
sfvTrack.setZOrderOnTop(true); // necessary
SurfaceHolder sfhTrackHolder = sfvTrack.getHolder();
sfhTrackHolder.setFormat(PixelFormat.TRANSPARENT);
sfvTrack.setZOrderOnTop(true);
placera la surfaceView au-dessus de la fenêtre, ce qui signifie que vous ne pouvez pas ajouter d'éléments au-dessus de la surfaceView.
Si vous souhaitez ajouter des vues au-dessus de la vue de surface; vous devriez envisager d'utiliser:
setZOrderMediaOverlay(true);
au lieu. Cela place cette vue de surface au-dessus des autres vues de surface, mais toujours derrière la fenêtre, vous permettant d'ajouter d'autres vues visibles au-dessus de la vue de surface.
TexttureView
conviendra mieux à vos besoins que SurfaceView
, je crois.
Est votre DrawingSurface et l'extension de SurfaceView?
Il n'y a aucun moyen d'obtenir une SurfaceView pour faire ce que vous voulez qu'elle fasse. La mécanique de la vue de surface est telle qu'elle ne peut rien voir derrière. (voir la réponse ici http://groups.google.com/group/Android-developers/browse_thread/thread/8d88ef9bb22da574 )
J'ai testé votre hiérarchie avec une vue personnalisée étendant SurfaceView et je vois votre problème. Si je passe à une vue personnalisée qui étend simplement la vue, je peux obtenir de la transparence.