web-dev-qa-db-fra.com

comment rendre surfaceview transparent

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>
81
Sunil Pandey

Essayez ceci dans le constructeur:

SurfaceView sfvTrack = (SurfaceView)findViewById(R.id.sfvTrack);
sfvTrack.setZOrderOnTop(true);    // necessary
SurfaceHolder sfhTrackHolder = sfvTrack.getHolder();
sfhTrackHolder.setFormat(PixelFormat.TRANSPARENT);
208
TantanQi
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.

6
Mikael Holmberg

TexttureView conviendra mieux à vos besoins que SurfaceView, je crois.

4
VJ Vélan Solutions

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.

4
slund