java - Android SurfaceView 视频重叠

标签 java android surfaceview android-mediaplayer android-videoview

在我的应用程序中,我使用 SurfaceView 显示本地视频。然而,在视频之间切换时,我注意到一个奇怪的(罕见的)错误:它们都重叠。

屏幕截图: Screenshot

有时旧视频(顶部黑色视频)保持静止,有时仍继续播放。 (无音频)

我该如何解决这个问题? 我之前使用的是VideoView,但仍然遇到这个问题。每次打开新视频时,都会重新创建我的 VideoFragment。我尝试在 fragment 的 onPause() 中释放视频,但仍然没有成功。

@Override
public void onPause()
{
    super.onPause();

    if (player != null && Video.getDownloaded())
    {
        if(player.isPlaying())
            player.stop();

        controller.hide();
        player.release();
    }
}

提前致谢,

~Pkmmte Xeleon

最佳答案

简单地说,SurfaceView 是一个奇怪的“小部件”。小心对待他们。

尝试重新组织您的 UI,以拥有单个 SurfaceView(或 VideoView,如果您回滚到该状态)。例如,它可以固定在操作栏选项卡下方,而其余内容则位于其下方的 fragment 内。在选项卡更改时,更新视频并替换主要 fragment 。

或者,如果您仅支持 API 级别 14+,请尝试使用 TextureView

关于java - Android SurfaceView 视频重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18647881/

相关文章:

java - 我可以从 spring bean 访问 graphql-context 吗?

Java IO "NaN"问题

android - 切换到较新版本的 android ndk 时未定义的模块

java - Camel 消耗队列中的消息但无法重新创建它

java - 后台线程安卓

android - Delphi XE6 发布请求和印地

android - 如何在 ConstraintLayout 中旋转 TextView 及其约束边界

android - 在横向模式下使用相机获取纵向预览

android - 录制相机视频并同时显示 youtube 视频

java - camera.setPreviewDisplay(SurfaceHolder) 上的异常