通常在Surfaceview作为预览视频帧的载体,有时需在上面显示提示文字。以前我弄的都好好的,今天忽然发现叠加的TextView不管咋弄都出不来文字了,跟Surfaceview一起放在FrameLayout也不行,后来想到merge布局,发现也不行。大爷的,奇了怪了,最后发现了原因,原来是顺序问题。也即无论是在RelativeLayout里还是merge布局里,View是逐个叠加上去的,一层一层铺上去的。如果你先放TextView在最前面,那肯定被后面的全屏Surfaceview覆盖了。用常规的RelativeLayout或者merge,只要处理好这个顺序问题都可以实现效果。下面附上本文的布局:
- <span style="font-family:Comic Sans MS;font-size:18px;"><merge xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:context=".CameraActivity" >
- <FrameLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content" >
- <SurfaceView
- android:id="@+id/previewSV"
- android:layout_width="0dip"
- android:layout_height="0dip" />
- </FrameLayout>
- <TextView
- android:id="@+id/tv_info"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="开始检测..."
- android:textColor="@android:color/holo_blue_light"
- android:textSize="25sp"
- android:visibility="visible" />
- <org.yanzi.ui.HandView
- android:id="@+id/hand_view"
- android:layout_width="match_parent"
- android:layout_height="match_parent" />
- <ImageButton
- android:id="@+id/photoImgBtn"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_gravity="bottom|center_horizontal"
- android:background="@drawable/photo_img_btn" />
- </merge></span>
传两张效果图:
张开手,红色画框:
手指合拢,画蓝框: