一、问题现象
最近有一个自定义相机预览开启和关闭的需求、返现每次预览相机的时候都会出现黑屏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每次预览都会黑屏一下的问题。
如果以上方案解决你了的问题,还请给个赞吧👍~光看不赞、纯属扯淡!
若有更好解决方案辛苦评论区探讨。