gpt4 book ai didi

Android:想要在相机预览上放置剪影叠加

转载 作者:行者123 更新时间:2023-12-02 17:57:05 24 4
gpt4 key购买 nike

我想知道如何在相机预览上添加剪影。到目前为止,我已经完成了以下示例,它仅预览相机。

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

我正在尝试进行相机预览,其中显示了一个剪影,以便使用该应用程序的人了解应该在哪里拍摄照片,然后单击一个按钮,即可拍摄照片,而无需当然是照片中的剪影。

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

最佳答案

使用 TextureView docs 中的示例您已链接,我们只需创建一个布局 XML 文件来保存 TextureView 并在 FrameLayout 中覆盖 ImageView。然后,我们使用此布局的资源 ID 调用 ActivitysetContentView() 方法,而不是示例中动态创建的 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.

...
}

布局中的覆盖层 ImageView 使用默认启动器图标作为其源图像,因为它具有透明度,至少在我的 IDE 上是这样。稍后您将用您的剪影替换该图像。 ImageView 列在 TextureView 之后,将出现在它的上面,因为 View 是根据它们的 z 顺序绘制的它们在布局中列出的顺序相同,第一个 View 列在底部;即 z 轴上距您最远的位置。

Activity中,我们只是将布局加载为内容View,并获取对在那里创建的TextureView的引用。其他一切都一样。

关于Android:想要在相机预览上放置剪影叠加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35196344/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com