Android SurfaceView预览相机黑屏问题解决方案

一、问题现象

最近有一个自定义相机预览开启和关闭的需求、返现每次预览相机的时候都会出现黑屏1S左右才能渲染出来。

二、问题分析

主要是surfaceview默认绘制背景就是黑色的,然后

通过查找大部分博客文章都是让

sv.setZOrderOnTop(true);

sv.setZOrderMediaOverlay(true);

这两个属性、有可能有效有可能无效,因为对于我这种现象没有解决,所以在此基础上又增加了几行代码、最终解决问题

三、解决方案

1、使用动态添加的方式添加surfaceView

在xml文件中添加FrameLayout

<FrameLayout
    android:id="@+id/colorsurface"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:visibility="invisible" />

2.创建SurfaceView并添加到FrameLayout上

surfaceView = new SurfaceView(this);
screenBinding.colorsurface.addView(surfaceView);

3.最后设置surfaceview两个属性

surfaceView.setZOrderMediaOverlay(true);
surfaceView.getHolder().setFormat(PixelFormat.TRANSPARENT);

即可解决surfaceview每次预览都会黑屏一下的问题。

如果以上方案解决你了的问题,还请给个赞吧👍~光看不赞、纯属扯淡!

若有更好解决方案辛苦评论区探讨。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FrancisBingo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值