我想知道如何在相机预览之上放置一个轮廓。到目前为止,我已经得到了以下示例,它只是预览了相机。
http://developer.android.com/reference/android/view/TextureView.html
我试图进行相机预览,我在其中显示了一个轮廓,以便使用应用程序的人知道应该拍摄照片的位置,然后点击一个按钮拍照,当然没有图片中的轮廓。
如何做到这一点?我似乎找不到任何关于如何在纹理视图上放置叠加层的示例。
答案 0 :(得分:10)
使用您已链接的TextureView
docs中的示例,我们只需创建一个布局XML文件,即可将TextureView
和重叠ImageView
保存在FrameLayout
中。然后,我们使用此布局的资源ID调用Activity
的{{1}}方法,而不是示例中动态创建的setContentView()
。
布局文件TextureView
:
main.xml
示例<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextureView android:id="@+id/texture_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<ImageView android:id="@+id/image_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#00000000"
android:src="@drawable/ic_launcher" />
</FrameLayout>
:
Activity
布局中的叠加层public class LiveCameraActivity extends Activity
implements TextureView.SurfaceTextureListener {
private Camera mCamera;
private TextureView mTextureView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mTextureView = (TextureView) findViewById(R.id.texture_view);
mTextureView.setSurfaceTextureListener(this);
}
// The TextureView.SurfaceTextureListener methods
// are the same as shown in the example.
...
}
使用默认启动器图标作为其源图像,因为它具有透明度,至少在我的IDE上。您稍后会用您的轮廓替换此图像。在ImageView
之后列出的ImageView
将显示在其上方,因为TextureView
是按照他们的z顺序绘制的,其顺序与他们列出的顺序相同在布局中,列出的第一个View
位于底部;即,在z轴上离你最远。
在View
中,我们只是将广告加载为内容Activity
,并获取对在此处创建的View
的引用。其他一切都是一样的。