Android 在PreviewView上绘制画布

Android 在PreviewView上绘制画布,android,android-camerax,Android,Android Camerax,我正在使用新的camerax库使用PreviewView组件显示相机预览。我有一个画布对象,我想在相机预览中显示它。我该怎么做 这是XML文件 <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xml

我正在使用新的
camerax
库使用
PreviewView
组件显示相机预览。我有一个
画布
对象,我想在相机预览中显示它。我该怎么做

这是XML文件

<?xml version="1.0" encoding="utf-8"?>
<layout 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">

    <data>

    </data>

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/constraint_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/black"
        tools:context=".MainActivity">

        <androidx.camera.view.PreviewView
            android:id="@+id/view_finder"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toTopOf="parent" />
    </androidx.constraintlayout.widget.ConstraintLayout>
</layout>
有一种在相机预览上绘制画布的方法,但它仅适用于
SurfaceView
而不适用于
PreviewView

surfaceHolder = surfaceView!!.holder
val canvas: Canvas = surfaceHolder!!.lockCanvas()

paint.apply {
    color = Color.RED
    textSize = 80.0f
    strokeWidth = 8.0f
}

canvas.drawLine(0f,0f,50f,50f,paint)
surfaceHolder!!.unlockCanvasAndPost(canvas)
问题是
SurfaceView
仅适用于
camera2
库,我无法将其用于
camerax
。如果解决方案是使用
SurfaceView
,如何使用
camerax

surfaceHolder = surfaceView!!.holder
val canvas: Canvas = surfaceHolder!!.lockCanvas()

paint.apply {
    color = Color.RED
    textSize = 80.0f
    strokeWidth = 8.0f
}

canvas.drawLine(0f,0f,50f,50f,paint)
surfaceHolder!!.unlockCanvasAndPost(canvas)