Android 在透明表面视图的顶部添加视图?

Android 在透明表面视图的顶部添加视图?,android,android-layout,surfaceview,Android,Android Layout,Surfaceview,描述如何使用透明背景制作SurfaceView 但是,它要求在SurfaceView上调用setZOrderOnTop(true),这将SurfaceView置于其他视图之上,这并不奇怪 这不是我想要的。给定视图sA、C和SurfaceViewB我想将视图排序为AbehindBbehindC 如果B不是具有透明背景的SurfaceView,这将是: <RelativeLayout> <ViewA> <ViewB> <ViewC> <

描述如何使用透明背景制作
SurfaceView

但是,它要求在
SurfaceView
上调用
setZOrderOnTop(true)
,这将
SurfaceView
置于其他视图之上,这并不奇怪

这不是我想要的。给定
视图
s
A
C
SurfaceView
B
我想将视图排序为
A
behind
B
behind
C

如果
B
不是具有透明背景的
SurfaceView
,这将是:

<RelativeLayout>
  <ViewA>
  <ViewB>
  <ViewC>
</RelativeLayout>


B
是具有透明背景的
SurfaceView
时,是否可以实现这一点?

当前SurfaceView API有四个可能的层。自上而下:

  • setZOrderOnTop
  • (观点)
  • Setzordermediagoverlay
  • 违约
SurfaceView曲面和包含所有视图的曲面由系统合成器合成。不能在两个视图之间对SurfaceView曲面进行Z顺序三明治。(如果需要完整的详细信息,请阅读。另请参阅中的“多曲面测试”活动,该活动由软件渲染为三个重叠的透明曲面视图。)


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

谢谢。对于paint-esque覆盖、使用画布和渲染线程的TextureView或自定义视图,您认为哪一种性能更好?在曲面上使用画布渲染从来都不是硬件加速的。这适用于SurfaceView和TextureView。使用自定义视图将获得更好的性能。硬件加速渲染器有一些限制,因此请查看答案中链接的硬件加速页面上支持的功能列表。