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
置于其他视图之上,这并不奇怪
这不是我想要的。给定视图sA
、C
和SurfaceView
B
我想将视图排序为A
behindB
behindC
如果B
不是具有透明背景的SurfaceView
,这将是:
<RelativeLayout>
<ViewA>
<ViewB>
<ViewC>
</RelativeLayout>
当B
是具有透明背景的SurfaceView
时,是否可以实现这一点?当前SurfaceView API有四个可能的层。自上而下:
- setZOrderOnTop
- (观点)
- Setzordermediagoverlay
- 违约
SurfaceView曲面和包含所有视图的曲面由系统合成器合成。不能在两个视图之间对SurfaceView曲面进行Z顺序三明治。(如果需要完整的详细信息,请阅读。另请参阅中的“多曲面测试”活动,该活动由软件渲染为三个重叠的透明曲面视图。)
您可能需要使用(API 14+),它具有许多相同的属性,但与视图完全交互。如果您使用画布在SurfaceView上绘制,则可以使用自定义视图,该视图具有渲染的附加优势。谢谢。对于paint-esque覆盖、使用画布和渲染线程的TextureView或自定义视图,您认为哪一种性能更好?在曲面上使用画布渲染从来都不是硬件加速的。这适用于SurfaceView和TextureView。使用自定义视图将获得更好的性能。硬件加速渲染器有一些限制,因此请查看答案中链接的硬件加速页面上支持的功能列表。