Java Android SurfaceView视频重叠
在我的应用程序中,我使用SurfaceView显示本地视频。然而,我在切换视频时注意到一个奇怪(罕见)的错误:它们都重叠 截图: 有时旧视频(顶部黑色视频)保持静止,有时仍继续播放。(没有音频) 我该如何解决这个问题? 我以前使用过VideoView,但仍然存在这个问题。每次打开新视频时,我的视频片段都会被重新创建。我试图在片段的onPause()中发布视频,但仍然没有成功Java Android SurfaceView视频重叠,java,android,surfaceview,android-mediaplayer,android-videoview,Java,Android,Surfaceview,Android Mediaplayer,Android Videoview,在我的应用程序中,我使用SurfaceView显示本地视频。然而,我在切换视频时注意到一个奇怪(罕见)的错误:它们都重叠 截图: 有时旧视频(顶部黑色视频)保持静止,有时仍继续播放。(没有音频) 我该如何解决这个问题? 我以前使用过VideoView,但仍然存在这个问题。每次打开新视频时,我的视频片段都会被重新创建。我试图在片段的onPause()中发布视频,但仍然没有成功 @Override public void onPause() { super.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
,如果您回滚到该视图)。例如,可以将其固定在操作栏选项卡下方,将其余内容放在其下方的片段中。在选项卡更改时,更新视频并替换主片段
或者,如果您只支持API级别14+,请尝试使用
TextureView
。我使用surfaceView作为视频表面或在表面上绘制一些东西。
当我非常快地切换活动时,例如切换到活动B并非常快地切换回,会有两个曲面重叠
dumpsys SurfaceFlinger,输出中有两个surfaceview
我试图修改surfaceflinger,当destroy surface调用时,即使它与layerbase分离,也要销毁它
这个问题也就解决了。你是如何在视频之间切换的?您是否只有一个
SurfaceView
(正确答案)或您是否试图拥有多个SurfaceView
(错误答案)?我初始化一个新片段以替换当前片段。我只有一个SurfaceView。由于只有一个SurfaceView
不能重叠,显然您必须有多个。您是否正在交换片段,每个片段都有一个SurfaceView
?是的,我正在交换片段,每个片段都有一个SurfaceView。谢谢,您的第一个建议似乎奏效了!不过,我想尝试一下TextureView。直到现在我还没有听说过它,但我找不到与mMediaPlayer.setSurface()等效的(我现在有一个SurfaceTexture,而不是Surface或SurfaceHolder)@Pkmmte:@commonware您好,在我的情况下,我以实时壁纸的形式播放视频,并在应用程序中以片段的形式播放视频…所以在出现视频片段之前,先显示BG(实时壁纸),然后开始播放视频…这里有任何建议。