こんにちは、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);
sfvTrack.setZOrderOnTop(true);
ウィンドウの上部にsurfaceViewを配置します。つまり、surfaceViewの上に項目を追加することはできません。
表面ビューの上にビューを追加する場合;次の使用を検討する必要があります。
setZOrderMediaOverlay(true);
代わりに。これにより、このsurfaceViewは他のsurfaceViewの上に配置されますが、まだウィンドウの背後にあるため、サーフェスビューの上に他の表示ビューを追加できます。
TexttureView
はSurfaceView
よりもニーズに合っていると思います。
DrawingSurfaceとSurfaceViewの拡張機能はありますか?
SurfaceViewで希望することを実行する方法はありません。表面ビューの仕組みは、背後に何も表示できないようになっています。 (こちらの回答をご覧ください http://groups.google.com/group/Android-developers/browse_thread/thread/8d88ef9bb22da574 )
SurfaceViewを拡張するカスタムビューで階層をテストしましたが、問題がわかりました。ビューを単純に拡張するカスタムビューに切り替えると、透明度を取得できます。