Android:想要在相机预览上添加轮廓叠加层

时间:2016-02-04 08:49:04

标签: android camera android-camera

我想知道如何在相机预览之上放置一个轮廓。到目前为止,我已经得到了以下示例,它只是预览了相机。

http://developer.android.com/reference/android/view/TextureView.html

我试图进行相机预览,我在其中显示了一个轮廓,以便使用应用程序的人知道应该拍摄照片的位置,然后点击一个按钮拍照,当然没有图片中的轮廓。

如何做到这一点?我似乎找不到任何关于如何在纹理视图上放置叠加层的示例。

1 个答案:

答案 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的引用。其他一切都是一样的。