textureview 缩放_设置TextureView(Camera2)全屏预览不拉伸

解决TextureView在使用Camera2全屏预览时保持比例不拉伸的问题,通过Matrix设置预览尺寸,避免变形。文章介绍了如何通过调整Matrix实现预览区域与View区域的匹配,并在不同屏幕旋转状态下正确缩放。同时提供了在不全屏情况下设置TextureView大小的方法,以及全屏时重写onMeasure方法以最大化显示的代码示例。
摘要由CSDN通过智能技术生成

关于拉伸问题,要使预览不变形,需要使用Matrix:

首先把视频区移动到View区,使两者中心点重合。

matrix.preTranslate((textureViewWidth - viewWidth) / 2, (textureViewHeight - viewHeight) / 2);

其次,因为默认视频是fitXY的形式显示的,所以首先要缩放还原回来。

matrix.preScale(viewWidth/ textureViewWidth, viewHeight/ textureViewHeight);

最后等比例放大或缩小,直到视频区的一边和View一边相等,不相等则留白。

int rotation =getWindowManager().getDefaultDisplay().getRotation();

Matrix matrix= newMatrix();

RectF viewRect= new RectF(0, 0, viewWidth, viewHeight);

RectF bufferRect= new RectF(0, 0, mPreviewSize.getHeight(), mPreviewSize.getWidth());float centerX =viewRect.centerX();float centerY =viewRect.centerY();if (Surface.ROTATION_90 == rotation || Surface.ROTATION_270 ==rotation) {

bufferRect.offset(centerX- bufferRect.centerX(), centerY -bufferRect.centerY());

matrix

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值