在透明SurfaceView上添加视图?

时间:2014-09-22 22:02:26

标签: android android-layout surfaceview

This answer介绍如何制作具有透明背景的SurfaceView

但是,setZOrderOnTop(true)需要调用SurfaceView,这不足为奇地将SurfaceView放在其他视图之上。

这不是我想要的。鉴于View s A CSurfaceViewB A,我希望将B后面的C排在后面B

如果SurfaceView不是具有透明背景的<RelativeLayout> <ViewA> <ViewB> <ViewC> </RelativeLayout> ,则只会是:

B

SurfaceView是具有透明背景的{{1}}时,是否可以实现此目的?

1 个答案:

答案 0 :(得分:5)

当前的SurfaceView API有四个可能的层。从上到下:

  • setZOrderOnTop
  • (查看)
  • setZOrderMediaOverlay
  • 默认

SurfaceView曲面和包含所有视图的曲面由系统合成器合成。你不能在两个视图之间将Z-order三明治夹在中间。 (如果您需要完整的详细信息,请阅读this article。另请参阅Grafika中的多表面测试活动,该软件将渲染为三个重叠的透明SurfaceView。)

您可能想要做的是使用TextureView(API 14+),它具有许多相同的属性,但与视图完全交互。如果您使用Canvas在SurfaceView上绘图,则可以使用自定义视图,它具有hardware accelerated渲染的附加优势。