系统UI(状态栏和导航栏)渲染神器

System UI (Statusbar and Navigation Bar) render artifact

我在 FullScreenActivity 中使用 Exoplayer 制作了一个全屏视频,其中 状态栏和导航栏被隐藏(来自 android >= 4.4).

activity 完成 时,我回到上一个 activity,它不是全屏(显示系统 ui)并且 70% 的时间我在系统 UI 上遇到一个非常奇怪的问题,如下所示:

注意是原图,所以导航栏右边的白色space显示在phone.

当恢复应用程序时播放另一个视频时,此伪影消失。顶部神器对应工具栏+状态栏。当全屏 activity 完全淡出并完成时,会出现工件。

欢迎任何建议或代码请求。

这可能是渲染问题,已报告 here

像这样设置您的WebView

yourWebView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

可以解决你的问题。

WebView(至少自 KitKat 以来)中存在一个已知错误,有时会导致这些伪像。它在 Android 错误跟踪器中作为 this issue 归档。尽管他们声称它已在 Android 5.0 中修复,但事实并非如此(至少根据我的经验)它不像以前那样容易重现。

无论如何,解决方法是对 WebView 使用软件渲染,通过 setLayerType():

webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);

一些相关问题:

  • Android SystemUI glitches in Lollipop
  • FlipAnimation causing issue in 4.4.3

如果您有一个重现错误的独立示例,如果您能将其提供给上面 link 中 AOSP 问题跟踪器的人员,我将不胜感激.