[android] SurfaceView를 투명하게 만드는 방법

안녕하세요, 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 위에 배치되지만 여전히 창 뒤에 있으므로 표면 뷰 위에 다른 보이는 뷰를 추가 할 수 있습니다.


답변

DrawingSurface 및 SurfaceView의 확장입니까?

원하는 작업을 수행하도록 SurfaceView를 얻을 수있는 방법은 없습니다. 표면보기의 메커니즘은 그 뒤에 아무것도 보이지 않도록합니다. ( http://groups.google.com/group/android-developers/browse_thread/thread/8d88ef9bb22da574 에서 답변 참조 )

SurfaceView를 확장하는 사용자 지정보기로 계층 구조를 테스트했는데 문제가 있음을 확인했습니다. 단순히보기를 확장하는 사용자 지정보기로 전환하면 투명성을 얻을 수 있습니다.


답변

TexttureView당신의 필요에 더 낫다고 SurfaceView생각합니다.


답변