Я использую новую библиотеку camerax
для отображения предварительного просмотра камеры с использованием компонента PreviewView
. У меня есть объект canvas
, и я хочу показать его в окне предварительного просмотра камеры. как я могу это сделать?
Вот файл 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>
Я пытался использовать метод draw
в ViewFinder, но он не работал
val canvas = Canvas()
paint.apply {
color = Color.RED
textSize = 80.0f
strokeWidth = 8.0f
}
canvas.drawLine(0f,0f,50f,50f,paint)
binding.viewFinder.draw(canvas)
Существует способ рисовать холст при предварительном просмотре камеры, но он работает только для 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
?