android - studio - cómo hacer que la superficie sea transparente
opacidad en android studio (4)
Hola a todos, quiero que mi vista DrawingSurface sea transparente. Intenté muchas cosas, pero no funciona.
Aquí está mi código xml para hacer que mi vista de superficie sea 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>
¿Es su DrawingSurface y la extensión de SurfaceView?
No hay forma de que SurfaceView haga lo que quiere que haga. La mecánica de la vista de superficie es tal que no puede tener nada visible detrás de ella. (vea la respuesta aquí http://groups.google.com/group/android-developers/browse_thread/thread/8d88ef9bb22da574 )
Probé tu jerarquía con una vista personalizada que extiende SurfaceView y veo tu problema. Si cambio a una vista personalizada que simplemente amplía View, puedo obtener transparencia.
Prueba esto en el constructor:
SurfaceView sfvTrack = (SurfaceView)findViewById(R.id.sfvTrack);
sfvTrack.setZOrderOnTop(true); // necessary
SurfaceHolder sfhTrackHolder = sfvTrack.getHolder();
sfhTrackHolder.setFormat(PixelFormat.TRANSPARENT);
TexttureView
será mejor para sus necesidades que SurfaceView
, creo.
sfvTrack.setZOrderOnTop(true);
colocará SurfaceView en la parte superior de la ventana, lo que significa que no puede agregar elementos en la parte superior de la superficie.
Si desea agregar vistas en la parte superior de la vista de superficie; debes considerar usar:
setZOrderMediaOverlay(true);
en lugar. Esto coloca esta SurfaceView encima de otras SurfaceViews, pero aún detrás de la ventana, lo que le permite agregar otras vistas visibles en la parte superior de la vista de la superficie.