Android - 打开和关闭屏幕时,覆盖在全屏视频最后一帧上的视图无法正确重绘

Nel*_*rez 19 android fullscreen android-video-player android-fragments android-view

我有一个以纵向模式播放的视频.在视频结束时,我需要显示一些视图.这到目前为止工作正常.

但是,我有一个问题,即在关闭屏幕后再返回活动,然后再打开屏幕时,视频最后一帧的视图不能正确重绘.

我观察到的是,当屏幕重新亮起并且我解锁时.我的视频和图像首先在全屏模式之外呈现(状态栏仍然显示),然后屏幕将进入全屏模式,将所有视图向上移动并导致伪像.

看起来这些视图在渲染后通过过渡到全屏来移出视图范围.

我真的很难过如何防止这种情况发生.

这是github上的沙箱项目,以避免使这个帖子充满代码.

该项目的基本设置如下:

片段活动在其布局上有视频视图和按钮视图.然后它将一个片段添加到contentView容器中.contentView在视频播放结束前1秒内淡出.

一切顺利,问题在于打开和关闭屏幕电源后返回应用程序.

此外,有时视频将完全退出,使视图位于黑色背景上.

提前感谢您提供的任何帮助.

正确呈现视频的视图

这是您关闭,重新打开和解锁屏幕时发生的瑕疵.请注意,我必须拍一张照片.在DDMS上,屏幕截图工具可以正确查看图像.

人工影像

Col*_*sey 3

您可以选择在用户唤醒手机后解锁键盘保护时接收事件,而不是阻止屏幕关闭。

此时,在两个视图上调用View.invalidate可能是个好主意,这应该会导致重绘。当锁定屏幕打开时,绘制链非常不稳定,因为您的应用程序在技术上是可见的,就在锁定屏幕下方。

    registerReceiver(new BroadcastReceiver() {
        @Override
        public void onReceive(Context ctx, Intent intent) {
            if(intent.getAction().equals(Intent.ACTION_USER_PRESENT))

        }
    }, new IntentFilter(Intent.ACTION_USER_PRESENT));
Run Code Online (Sandbox Code Playgroud)