This answer介绍如何制作具有透明背景的SurfaceView
。
但是,setZOrderOnTop(true)
需要调用SurfaceView
,这不足为奇地将SurfaceView
放在其他视图之上。
这不是我想要的。鉴于View
s A
C
,SurfaceView
和B
A
,我希望将B
后面的C
排在后面B
。
如果SurfaceView
不是具有透明背景的<RelativeLayout>
<ViewA>
<ViewB>
<ViewC>
</RelativeLayout>
,则只会是:
B
当SurfaceView
是具有透明背景的{{1}}时,是否可以实现此目的?
答案 0 :(得分:5)
当前的SurfaceView API有四个可能的层。从上到下:
SurfaceView曲面和包含所有视图的曲面由系统合成器合成。你不能在两个视图之间将Z-order三明治夹在中间。 (如果您需要完整的详细信息,请阅读this article。另请参阅Grafika中的多表面测试活动,该软件将渲染为三个重叠的透明SurfaceView。)
您可能想要做的是使用TextureView(API 14+),它具有许多相同的属性,但与视图完全交互。如果您使用Canvas在SurfaceView上绘图,则可以使用自定义视图,它具有hardware accelerated渲染的附加优势。