如何使表面视图透明

你好,我想让我的DrawingSurface视图透明。 我尝试了很多东西,但它不工作。

这是我的xml代码,使我的表面视图透明

<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> 

在构造函数中试试这个:

 SurfaceView sfvTrack = (SurfaceView)findViewById(R.id.sfvTrack); sfvTrack.setZOrderOnTop(true); // necessary SurfaceHolder sfhTrackHolder = sfvTrack.getHolder(); sfhTrackHolder.setFormat(PixelFormat.TRANSPARENT); 

您的DrawingSurface和SurfaceView的扩展?

没有办法让SurfaceView做你想做的事情。 表面视图的机制是这样的,它不能有任何可见的后面。 (请参阅http://groups.google.com/group/android-developers/browse_thread/thread/8d88ef9bb22da574的答案);

我用自定义视图testing了你的层次结构,扩展了SurfaceView,我看到了你的问题。 如果我切换到一个简单的扩展视图的自定义视图,我可以获得透明度。

 sfvTrack.setZOrderOnTop(true); 

将把surfaceView放在窗口的顶部,这意味着你不能在surfaceView的顶部添加项目。

如果您想在曲面视图顶部添加视图, 你应该考虑使用:

 setZOrderMediaOverlay(true); 

代替。 这将这个surfaceView放置在其他surfaceView的顶部,但仍然在窗口后面,允许您在曲面视图顶部添加其他可见视图。

我相信TexttureView会比SurfaceView更适合您的需求。