Android切换至SurfaceView时闪屏(黑屏闪一下)以及黑屏移动问题的解决方法

概述1.最近的项目中,有一个Activity用到Fragment+ViewPager,其中一个fragment中实现了视频播放的功能,包含有SurfaceView。结果,每次打开程序第一次进入到该Activity时都会闪屏黑一下。原因就出在SurfaceView。

1.最近的项目中,有一个Activity用到Fragment+VIEwPager,其中一个fragment中实现了视频播放的功能,包含有SurfaceVIEw。结果,每次打开程序第一次进入到该Activity时都会闪屏黑一下。原因就出在SurfaceVIEw。

详解:

  I think I found the reason for the black flash. In my case I'm using a SurfaceVIEw insIDe a Fragment and dynamically adding this fragment to the activity after some action. The moment when I add the fragment to the activity,the screen flashes black. I checked out grepcode for the SurfaceVIEw source and here's what I found: when the surface vIEw appears in the window the very fist time,it requests the window's parameters changing by calling a private Iwindowsession.relayout(..) method. This method “gives” you a new frame,window,and window surface. I think the screen blinks right at that moment.
   The solution is pretty simple: if your window already has appropriate parameters it will not refresh all the window's stuff and the screen will not blink. The simplest solution is to add a 0px height plain SurfaceVIEw to the first layout of your activity. This will recreate the window before the activity is shown on the screen,and when you set your second layout it will just continue using the window with the current parameters. I hope this helps.

原因:

SurfaceVIEw因为不同于一般的vIEw,它有自己良好的缓冲以及数据存取机制,系统对他有特殊处理。当surfacevIEw第一次在当前activity上添加的时候,系统会给WindowManager重新排布局,relayout,这样就会黑一下,这个只会出现在第一次,以后再添加surfacevIEw时就不会黑屏了。

解决:

可以在没有进入surfacevIEw的界面(比如很多程序一进去就有个Loading界面)的时候,在其它界面的layout.xml文件中添加一个SurfaceVIEw,宽和高都弄成0dp,这样对布局没影响,而且这个东西使得surfacevIEw第一次出现了,那么也就是说,下一次我们真正用到SurfaceVIEw的时候就不会闪屏了。

2.vIEwpager中有surfacevIEw播放视频,来回滑屏时,关于黑屏移动问题

解决:

surfacevIEw.setZordertop(true);

surfacevIEw.getHolder().setFormat(SurfaceVIEw.transparent);

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持编程小技巧!

总结

以上是内存溢出为你收集整理的Android切换至SurfaceView时闪屏(黑屏闪一下)以及黑屏移动问题的解决方法全部内容,希望文章能够帮你解决Android切换至SurfaceView时闪屏(黑屏闪一下)以及黑屏移动问题的解决方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1147352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存