Android-覆盖在全屏视频最后一帧上的视图don';在打开和关闭屏幕时,请不要正确地重新绘制

Android-覆盖在全屏视频最后一帧上的视图don';在打开和关闭屏幕时,请不要正确地重新绘制,android,fullscreen,android-fragments,android-view,android-video-player,Android,Fullscreen,Android Fragments,Android View,Android Video Player,我有一个以纵向模式播放的视频。在视频的最后,我需要在上面显示一些视图。到目前为止,这一切都很好 但是,我遇到了一个问题,即在关闭屏幕、再次打开屏幕、然后解锁屏幕后,返回活动时,视频最后一帧的视图没有正确地重新绘制 我观察到的是,当屏幕重新打开时,我解锁。我的视频和图像首先在全屏模式之外呈现(状态栏仍在显示),然后屏幕将进入全屏模式,将所有视图向上移动并产生伪影 在渲染后,视图过渡到全屏时,视图似乎被移出了视图边界 我真的很困惑如何防止这种情况发生 避免让这篇文章充满代码 项目的基本设置如下: 片

我有一个以纵向模式播放的视频。在视频的最后,我需要在上面显示一些视图。到目前为止,这一切都很好

但是,我遇到了一个问题,即在关闭屏幕、再次打开屏幕、然后解锁屏幕后,返回活动时,视频最后一帧的视图没有正确地重新绘制

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

在渲染后,视图过渡到全屏时,视图似乎被移出了视图边界

我真的很困惑如何防止这种情况发生

避免让这篇文章充满代码

项目的基本设置如下:

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

一切都很顺利,问题是在打开和关闭屏幕后返回应用程序

此外,有时视频会完全退出,将视图保留在黑色背景上

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

这里是当你关闭屏幕、重新打开屏幕和解锁屏幕时所发生的人工制品。 请注意,我必须为它拍照。在DDMS上,屏幕截图工具可以正确地看到图像


看起来覆盖布局被控制器栏移动了

您不认为它受到控制器(播放/暂停/ff/rew+进度)区域的影响吗?

可能有一种方法可以防止屏幕首先关闭,因为这将有助于解决重新绘制的问题,希望这能有所帮助。

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

在这一点上,调用两个视图可能是一个好主意,这将导致重新绘制。当锁屏打开时,绘图链非常脆弱,因为从技术上讲,你的应用程序是可见的,就在锁屏下面

    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));

嗨,乔娜。不知道你的意思。我没有为此mediaplayer实例设置任何控制器。但是,我还应该做些什么来确保控制器栏不会干扰吗?谢谢你的建议,科林。我试试看,谢谢,科林。这肯定有帮助,我还没有想出如何解决它,但你的建议说明了问题。问题是在查看锁定屏幕时调用onResume。在锁定屏幕上,状态栏可见,这会导致绘制不正确。接收用户当前意图将有助于纠正问题。现在唯一的问题是,对这些观点进行无效裁决似乎没有任何效果。但这应该是容易的部分。再次感谢!NP调用invalidate也可能很棘手,有些视图会希望从缓存或以前的目录区域中进行无效化。您可以尝试使用Rect调用invalidate,或者requestLayout也应该杀死大多数视图缓存。