안녕하세요, 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
생각합니다.