web-dev-qa-db-ja.com

表面ビューを透明にする方法

こんにちは、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>
81
Sunil Pandey

コンストラクターでこれを試してください:

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

ウィンドウの上部にsurfaceViewを配置します。つまり、surfaceViewの上に項目を追加することはできません。

表面ビューの上にビューを追加する場合;次の使用を検討する必要があります。

setZOrderMediaOverlay(true);

代わりに。これにより、このsurfaceViewは他のsurfaceViewの上に配置されますが、まだウィンドウの背後にあるため、サーフェスビューの上に他の表示ビューを追加できます。

6
Mikael Holmberg

TexttureViewSurfaceViewよりもニーズに合っていると思います。

4

DrawingSurfaceとSurfaceViewの拡張機能はありますか?

SurfaceViewで希望することを実行する方法はありません。表面ビューの仕組みは、背後に何も表示できないようになっています。 (こちらの回答をご覧ください http://groups.google.com/group/Android-developers/browse_thread/thread/8d88ef9bb22da574

SurfaceViewを拡張するカスタムビューで階層をテストしましたが、問題がわかりました。ビューを単純に拡張するカスタムビューに切り替えると、透明度を取得できます。

4
slund