Android SurfaceView视频重叠

时间:2013-09-06 00:09:54

标签: java android surfaceview android-mediaplayer android-videoview

在我的应用中,我使用SurfaceView显示本地视频。但是,我在视频之间切换时发现了一个奇怪的(罕见的)错误:它们都重叠了。

截图: Screenshot

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

我该如何解决这个问题? 我之前使用的是VideoView,但仍有此问题。每次打开新视频时都会重新创建我的VideoFragment。我尝试在片段的onPause()中发布视频,但仍然没有运气。

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

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

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

先谢谢,

~Pkmmte Xeleon

2 个答案:

答案 0 :(得分:2)

简而言之,SurfaceView是一个奇怪的“小部件”。小心对待他们。

尝试重新组织您的用户界面以获得一个SurfaceView(或VideoView如果您回滚到那个)。例如,可以将其固定在操作栏标签下方,其余内容位于其下方的片段中。在选项卡更改时,更新视频并替换主片段。

或者,如果您只支持API Level 14+,请尝试使用TextureView

答案 1 :(得分:0)

我将surfaceView用作视频的表面或在该表面上绘制一些东西。 当我快速切换活动时,例如切换到活动B并快速切换回去,这两个表面重叠。

dumpsys SurfaceFlinger,输出中有两个Surfaceview。

我尝试修改surfaceflinger,当破坏表面被调用时,即使它与layerbase分离,也将其破坏。

这个问题消失了。