TextureView预览Camera画面变形的问题

在竖屏画面上预览横屏或特定分辨率的画面时,都会有拉伸的现象发生。

网上查找了很多方法,说找到最适合的。。。。但对于特定分辨率,比如要求1280*720分辨率,那这个方法就豪无用武之地。

其他方法更加是五花百门,都没有解决的办法,后来我找到了一个折中的办法:

既然画面有拉伸,是因为横向的画面被近压缩成了竖向的画面了,那此时我将竖向的画面延伸成横向画面即可:

如下图所示,蓝色虚线表示延伸的画面:

 

代码上直接在xml文件上修改即可:

<TextureView
            android:id="@+id/single_camera_texture_preview"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_marginStart="-250dp"
            android:layout_marginEnd="-250dp"
            android:layout_marginBottom="60dp"/>

 

上述代码距左右距离250dp,可根据自己当前项目灵活调整。

如果大家有更好的解决办法,也可以在贴出来一起讨论~

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用TextureView预览相机画面可以避免预览画面拉伸问题,同时也可以提供更加灵活的界面设计。下面是使用TextureView预览相机画面的简单步骤: 1. 在布局文件中添加TextureView控件: ``` <TextureView android:id="@+id/texture_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 2. 在相机启动时,将TextureView相机绑定: ``` // 获取TextureView控件 TextureView textureView = findViewById(R.id.texture_view); // 获取相机实例 Camera camera = Camera.open(); // 获取相机参数 Camera.Parameters parameters = camera.getParameters(); // 获取支持的预览尺寸 List<Camera.Size> previewSizes = parameters.getSupportedPreviewSizes(); Camera.Size previewSize = previewSizes.get(0); // 设置TextureView的尺寸 textureView.setAspectRatio(previewSize.width, previewSize.height); // 设置预览回调函数 camera.setPreviewTexture(textureView.getSurfaceTexture()); // 启动相机预览 camera.startPreview(); ``` 在上述代码中,首先获取TextureView控件,然后获取相机实例和相机参数。接着,获取相机支持的预览尺寸,并将TextureView的尺寸设置为预览尺寸。最后,将TextureView的SurfaceTexture对象作为预览回调函数的参数,并启动相机预览。 需要注意的是,使用TextureView预览相机画面需要考虑TextureView的生命周期,避免出现资源泄露等问题。在Activity的onPause()方法中,应该停止相机预览,并释放相机资源。在Activity的onResume()方法中,重新启动相机预览即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值