把SurfaceView隐藏一次,再显示一次就行了
SurfaceView.visibility=View.GONE
SurfaceView.visibility=View.VISIBLE
解释一下:
surfaceHolder=sv.holder
surfaceHolder?.addCallback(this)
surfaceHolder?.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS)
一般我们都这么初始化surfaceHolder,然后在callback会调中初始化camear
override fun surfaceChanged(holder:SurfaceHolder?, format:Int, width:Int, height:Int) {
}
override fun surfaceDestroyed(holder:SurfaceHolder?) {
}
override fun surfaceCreated(holder:SurfaceHolder?) {
}
这儿就会走surfaceCreated,在里面初始camera,但是在走这个方法之后,发现还没申请权限,就去申请权限,权限申请成功了后,却没有预览界面.
因为这儿已经不会再走一次callback了,但是呢,只需要改变一次预览界面的大小啊什么的就会再走callback,所以就有了开始的隐藏一次再显示一次,就会再调用callback了,这样就能再次初始化camera了,预览界面就有了
网友评论