【问题标题】:Need to display a camera preview inside a circular view需要在圆形视图内显示相机预览
【发布时间】:2017-11-11 14:49:14
【问题描述】:

我需要实现圆形相机预览。我正在使用带有 TextureView 的 camera2 api。我添加了如下布局:

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

这样做我得到以下结果: 如您所见,相机预览显示为正方形,但我希望它是圆形的,同时将黄色图像保留在背景中。我怎样才能做到这一点?我确实参考了一些关于以前提出的类似问题的示例,但它们是使用旧相机 api 而不是 TextureView 完成的。

感谢任何帮助。

【问题讨论】:

    标签: android camera android-camera android-camera2 android-textureview


    【解决方案1】:

    您需要一个常规的图像视图,而不是 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 />
    

    上面的简写假定 size --> android:widthandroid:height。纹理大小以编程方式设置以适应相机预览的纵横比,并通过其上方 ImageView 层中的圆孔暴露感兴趣的区域。

    【讨论】:

    • true,但是我仍然如何将 TextureView 设置为圆形图像?如您所见,TextureView 仍然是一个正方形。另外问题是背景图像(现在是黄色)将是一个渐变图像,所以我不能有一个方形图像视图并使角落不透明并且圆形透明@Alex Cohn
    • 不需要将TextureView设置为圆形图片;您只需要一个圆形“窗口”进入矩形相机预览。至于渐变背景,请考虑将整个背景制作为带有透明圆圈的图像(请参阅更新的答案)。
    • 感谢您的解决方案!我在覆盖在相机视图顶部的渐变图像上绘制了一个透明圆圈,并且能够实现我想要的外观。
    • 我面临的一个问题是该圆圈中显示的预览很大,我只希望它足够小以捕获手持设备的面部。我尝试在布局中将 TextureView 的宽度和高度设置为相同,但图像似乎被挤压了。有什么办法可以通过保持纵横比将预览设置为更小?
    • 我不完全理解你的问题。屏幕截图或草图可能会有所帮助
    猜你喜欢
    • 1970-01-01
    • 2014-06-01
    • 2015-05-21
    • 2012-03-30
    • 1970-01-01
    • 2020-12-28
    • 2017-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多