0

我需要实现圆形相机预览。我正在使用TextureView的camera2 api。我加的布局如下:需要在圆形视图内显示相机预览

<FrameLayout> 
<TextureView/> 
<CircularImageView/> 
<FrameLayout/> 

这样做我得到以下结果: enter image description here 正如你可以看到,摄像头预览显示为正方形,但我想那是一个圆形的,也保持背景中的黄色图像。我怎样才能做到这一点?我没有提到几个类似问题的例子,但是他们使用旧相机API而不是TextureView。

任何帮助表示赞赏。

回答

0

取代CircularImageView,您需要一个常规的图像视图,在其中加载一个具有所需大小的圆形透明孔的PNG。

因此,所提出的层次可能是这样的:

<FrameLayout size="match_parent"> 
    <TextureView size=<calculated_to_match_camera> centered /> 
    <ImageView size="match_parent" src="full-screen-gradient-with-transparent-circle-in-center.png" /> 
<FrameLayout /> 

上面的速记假定大小 - >安卓宽度机器人:身高。通过编程设置纹理大小以适应相机预览纵横比,并使感兴趣区域通过其上方的ImageView图层中的圆孔暴露。

+0

是真的,但仍然如何将TextureView设置为圆形图像?正如你看到的TextureView仍然是一个正方形。另外问题是背景图像(现在是黄色)将成为一个渐变图像,所以我不能有一个方形图像视图,并使角落不透明,并且圆圈不透明。@Alex Cohn – Neha

+0

您不需要设置TextureView到圆形图像;你只需要一个圆形的“窗口”进入矩形相机预览。至于渐变背景,请考虑将整个背景用透明圆形制成一个图像(请参阅更新后的答案)。 –

+1

感谢您的解决方案!我在渐变图像顶部绘制了一个透明的圆形,覆盖在相机视图顶部,并且能够实现我想要的外观。 – Neha

相关问题