android - 将 ImageView 放置在透明 SurfaceView 上

标签 android surfaceview transparent

我有一个带有透明背景的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/

相关文章:

android - UBS电缆中断了音频插孔的麦克风输入

android - 你能播放 assets 文件夹中的 mp3 文件吗?

java - 为什么 SurfaceView 没有合适的构造函数?

android - 将相机渲染到多个表面 - 屏幕上和屏幕外

Android 对话框 - 圆角和透明度

android - Android中的自定义adapterview setselection实现

java - 帮助在 Java 中将颜色十六进制存储为整数

android - 录制时拍摄相机屏幕截图 - 就像在 Galaxy S3 中一样?

objective-c - 没有背景着色的 UIActionSheet

java - 设置整个JPanel的透明颜色