首页 > 解决方案 > 如何切换Android SurfaceView实现双摄像头缩放效果?

问题描述

我按照Android 的教程创建了一个包含多个物理相机的捕获会话。根据文章,我创建了两个SurfaceViews来实现缩放效果。

如果我SurfaceView在布局中显示两个 s,就没有问题:

<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <FrameLayout android:layout_height="match_parent"
        android:layout_width="match_parent">
        <android.view.SurfaceView
            android:id="@+id/sf1"
            android:layout_width="match_parent"
            android:layout_height="400dp"
            />
        <android.view.SurfaceView
            android:id="@+id/sf2"
            android:layout_width="match_parent"
            android:layout_height="400dp"
            android:layout_gravity="bottom"/>
    </FrameLayout>


</android.support.constraint.ConstraintLayout>

在此处输入图像描述

但是,如果两个SurfaceViews 都是全屏的(一个可见,另一个不可见),我无法通过双击事件切换它们。这是我尝试过的代码:

fun toggleView() {
        if (isOnTop) {
            isOnTop = false
            sv1.setZOrderMediaOverlay(true)
            sv2.setZOrderMediaOverlay(false)
//            sv1.setZOrderOnTop(true)
//            sv2.setZOrderOnTop(false)
//            sv1.visibility = View.VISIBLE
//            sv2.visibility = View.INVISIBLE
        }
        else {
            isOnTop = true
            sv2.setZOrderMediaOverlay(true)
            sv1.setZOrderMediaOverlay(false)
//            sv2.setZOrderOnTop(true)
//            sv1.setZOrderOnTop(false)
//            sv1.visibility = View.INVISIBLE
//            sv2.visibility = View.VISIBLE
        }

    }

如何SurfaceView正确切换 s 以实现缩放效果?

标签: androidcamerasurfaceviewmulti-camera-api

解决方案


推荐阅读