SurfaceView加载屏幕闪烁、图层不显示的一些解决办法

来源:互联网 发布:医院预约挂号系统源码 编辑:程序博客网 时间:2024/05/19 13:43

最近在做一个视频直播的项目,用到surfaceView来播放视频画面,开始做以后才发现这个控件是有多坑爹,下面先说一下我遇到的几个问题,如果大家也遇到了而且有更好地解决方法的话,欢迎交流。

问题一:当SrrfaceView没有写在布局文件上时,而是通过ViewGroup的add来进行添加时,屏幕会闪烁一下

              解决办法:

              这是由于surafaceView第一次加载的时候,会重新刷新页面,其实解决方法也简单,就是在你的布局文件中写一个surfaceView,宽高设置成0就可以了,随便放在那里都行,就是这么简单的一个问题竟然困扰了我好久,以前没怎么用过SUrfaceView(因为都不是太了解,还让sdk大神背了一段时间黑锅,就不告诉他了),其实耐心点的话会发现只有第一次addVew(SurfaceView)会出现闪烁的状况,第二次就不会了,(猜也猜到了大哭


问题二:SurfaceView的图层问题,有时候add了以后,找不到这个surfaceView,退出的时候,发现它在某个图层的最下层,出现这个问题的原因我倒现在还不怎么了解,如果有哪位大神路过,希望解答一下可以。

             解决办法:

             surfaceView有两个方法可以大概基本解决这个问题,首先第一册方法是surfaceView.setZOrderOnTop(true),把surface设置为最顶层图层,但是,这个有一个很坑的地方是什么呢,就是它真的变成了最顶层,不管你想在这个控件上面再覆盖什么控件都不可能了,就是最顶层,就是这么任性。但是还有一个方法surfaceView.setZorderMediaOverlay(true)这个方法可以让surfaceView恢复到原来的图层,但是横竖屏切换的时候有时候没有起作用,这就真不知道怎么办了,有大神路过给解答一下。

1 0