有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android SurfaceView视频重叠

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

屏幕截图: Screenshot

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

我该怎么解决这个问题? 我以前使用过VideoView,但仍然存在这个问题。每次打开新视频时,我的视频片段都会被重新创建。我试着在片段的onPause()中发布视频,但仍然没有成功

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

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

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

提前谢谢

~Pkmmte-Xeleon


共 (2) 个答案

  1. # 1 楼答案

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

    尝试重新组织您的UI,使其具有一个SurfaceView(或者VideoView,如果您回滚到该界面)。例如,它可以固定在操作栏选项卡下方,而其余内容则在其下方的一个片段中。在选项卡更改时,更新视频并替换主片段

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

  2. # 2 楼答案

    我使用surfaceView作为视频或在表面上绘制东西的表面。 当我非常快地切换活动时,例如切换到活动B并非常快地切换回来,有两个表面重叠

    dumpsys SurfaceFlinger,输出中有两个surfaceview

    我试图修改surfaceflinger,当destroy surface调用时,即使它与layerbase分离,也要销毁它

    这个问题就这样解决了