camera预览界面(不压缩圆形效果)

本文介绍了在camera2开发中如何解决TextureView预览界面显示为圆形的问题。面对预览界面无法圆形显示及压缩的挑战,通过重写TextureView的ViewOutlineProvider,利用getOutline方法实现裁剪和圆角效果。首先设置4:3的高宽比例避免压缩,然后裁剪成正方形并设置圆角大小为边长一半,从而达到预期的圆形预览界面效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

camera预览界面

效果

ue图如下:
在这里插入图片描述

问题

用camera2开发人脸录入界面,使用TextureView展示预览界面。发现两个问题:
1.预览界面无法显示为圆形,你会发现TextureView默认是矩形,且onDraw等方法是final 的,无法继承重写
2.如果TextureView的高宽是一样的长度,你会发现预览界面是压缩的,原因是大部分手机的camera支持的尺寸很少有1:1的,大部分是4:3的

重写TextureView的ViewOutlineProvider

原理还是进行裁剪,通过重写ViewOutlineProvider的getOutline方法,一般来说对任何view,都可以通过该接口实现裁剪和圆角等效果。
先将TextureView的高宽设置成4:3,这样不会压缩,再对其进行裁剪,先裁剪成正方形的矩形(如虚线所示),再将圆角大小设置成正方形边长的一半,就会显示成圆形。裁剪原理图如下:
在这里插入图片描述
代码如下:

class RoundTextureView(context: Context, attrs: AttributeSet) : TextureView(context, attrs) {
   
   init {
   
       outlineProvider = object : ViewOutlineProvider(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值