Android CameraX的PreviewView预览圆角
一、需求 相机预览 使用的控件是androidx.camera.view.PreviewView 希望四个角是圆角 二、解决 第一步,将PreviewView 的控件背景 设置为圆角背景**(很重要)** 第二部,发现OutlineProvider 可以给view设置圆角,控件的OutlineProvider重新赋值 代码如下 布局代码:
<androidx.camera.view.PreviewView
android:id="@+id/camera_preview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="20dp"
android:background="@drawable/shape_radius_10"/>
shape_radius_10.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp"/>
</shape>
活动中的java代码
val outline = Outline().also {
it.setRoundRect(Rect(0, 0, binding.cameraPreview.width, binding.cameraPreview.height), radius * resources.displayMetrics.density)
}
val outlineProvider = binding.cameraPreview.outlineProvider
outlineProvider.getOutline(binding.cameraPreview, outline)
binding.cameraPreview.outlineProvider = outlineProvider
binding.cameraPreview.clipToOutline = true
整个过程就是将OutlineProvider 取出来,将新的Outline 复制给 OutlineProvider 然后重新设置回 view中,
binding.cameraPreview.clipToOutline = true
这个也很重要,没有这句代码,圆角还是无效。
|