【发布时间】:2014-03-14 13:55:39
【问题描述】:
我对 Android 视图上的 z-index 有疑问。我有一个 GLSurfaceView 和另一个 SurfaceView 用于视频播放的活动。我在互联网上读到,多个表面视图不是为了放置在同一个布局上,但是这些帖子有点老了,我不知道这是否仍然正确。
无论如何,我对视图的顺序有疑问。我希望 VideoView 位于 GLSurfaceView 后面。它在应用程序启动时起作用,因为我在构造 VideoView 时调用了方法 setZOrderOnTop(false)。
public class LBVideoView extends SurfaceView implements OnPreparedListener, OnCompletionListener, SurfaceHolder.Callback {
private Context m_context;
public LBVideoView(Context context) {
super(context);
m_context = context;
init();
}
private void init()
{
this.getHolder().addCallback(this);
this.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
this.getHolder().setFormat(PixelFormat.TRANSLUCENT);
setZOrderOnTop(false); //CODE TO SET VIDEO VIEW TO BACK
}
}
当应用程序进入后台并稍后恢复时会出现问题。无论我在运行 Android 4.1.2 的设备上做什么,VideoView 都会出现。在我运行 Android 4.4 的 Nexus 5 上,它永远不会发生。这在最新的 Android 版本上是否有所更改?我需要保持与旧版本的兼容性...
如果我删除所有视图并再次添加它可以工作,但这对我没有帮助,因为它破坏了视频的表面视图,我不希望这种情况发生。
有谁知道如何保持 GLSurfaceView 后面的表面视图,即使在恢复之后?
【问题讨论】:
标签: android video view z-index