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)