2012-06-15 20 views
0

我想创建的View辩的另一个​​顶层一个层次是,大致为:如何将SurfaceView放入视图的分层结构中?

的FrameLayout {
    SurfaceView
   查看
   查看
    SurfaceView
   查看
    SurfaceView
}

我希望每个SurfaceView的绘图事件出现在层次结构中的正确位置。例如,顶面应显示在所有内容的前面。底部的一个应该出现在一切之后。

不幸的是,我可以使每个表面出现在所有使用setZOrderOnTop(true)的表面前,并且我可以使每个表面出现在底部,而不是这样做,但是我不能让它出现在中间。如何做到这一点?

+0

您不必使用FrameLayout,您可以在onCreate中使用addContentView()。我怀疑Android会有如此多的观点表现出色。所有可以用一个或两个视图完成。 – Lumis

+0

我有一系列的按钮关闭到一边,所以实际上我不能使用活动的根'FrameLayout',但由于它是一个'FrameLayout'这就引发了这个问题。我的应用程序绝对要求我生成一个分层图形,在相对静态元素之间快速更改元素,因此我必须在“视图”中实现复杂的自定义绘图或使用图层(最终自定义绘图最终将执行相同的处理)。 –

+0

由于只有一个视图可以进行触摸输入,并且用户只能看到一个表面,所以一切都取决于图形的层次。使用画布的单个自定义视图可以完成这项工作。虽然有时在正常的android视图下,但有一个放置了动画背景的自定义视图。所以我看不到任何应用程序如何需要两个以上的真实图层......我很好奇你在做什么...... – Lumis

回答

0

FrameLayout旨在屏蔽屏幕上的区域以显示单个项目。通常,应该使用FrameLayout来保存单个子视图,因为以可扩展到不同屏幕尺寸的方式组织子视图可能很困难,而这些子视图之间没有儿童重叠。

我建议您改用LinearLayoutRelativeLayout

+0

我想你已经误解了:我希望所有的图层重叠。事实上,我希望他们在字面上占据同一个矩形的不同层次;此外,这是工作得很好,除了'SurfaceView'元素要么在后面,要么在前面(我希望其中的一个在中间)。 –

0

在撰写本文时,这似乎是不可能的。

+0

您是否尝试过顶级SurfaceViews的getHolder()。setFormat(PixelFormat.TRANSLUCENT)?我只是在做一个相机覆盖... – Lumis

+0

让它覆盖是不是问题 - 问题是让不透明的像素显示*在顶部的元素下面,但*上面的*底部的。 –