我有一个带有透明背景的SurfaceView,我在上面绘制东西,在上面我想要绘制一个ImageView。
为了使 SurfaceView 透明,我必须设置 surfaceView.setZOrderOnTop(true)
,但问题是现在,我的 SurfaceView 的 Canvas 绘制在 ImageView 的顶部,
这是有道理的,因为 setZOrderOnTop(true)
。
我的问题是,有办法实现我想要的吗?具有透明背景的 SurfaceView 和其顶部的 ImageView?
谢谢, 弗拉德
编辑:好的,所以这是不可能的。请参阅下面法登的回答,或 https://www.youtube.com/watch?v=duefsFTJXzc&feature=feedwll&list=WL以便更深入地了解。
最佳答案
您无法使用单个 SurfaceView
完成您想要的操作。
所有 View 都组合到一个图层上。 SurfaceView 有两个部分,“View”部分(只是一个透明的占位符)和“Surface”部分。后者是一个完全独立的层。
因此,您可以将“Surface”部分放在所有其他 View 之上或所有其他 View 之下,但不能将其放在两者之间。 TextureView
将执行您想要的操作,但您需要使用 API 14+。
但是,您可以拥有多个 SurfaceView
,并将“Surface”层放置在不同的 Z 级别。有充分的理由不这样做——一旦你有超过 N 个表面,系统合成器可能会切换到效率较低的操作模式——但这是可能的。请参阅 Grafika 中的“多表面测试”举个例子。
关于android - 将 ImageView 放置在透明 SurfaceView 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22818033/