一、需求
相机预览 使用的控件是androidx.camera.view.PreviewView 希望四个角是圆角
二、解决
第一步,将PreviewView 的控件背景 设置为圆角背景**(很重要)**
第二部,发现OutlineProvider 可以给view设置圆角,控件的OutlineProvider重新赋值
代码如下
布局代码:
shape_radius_10.xml
活动中的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
这个也很重要,没有这句代码,圆角还是无效。



