我认为很多人都尝试过。Google引擎清楚地(here)声明,您应该避免堆叠Surface
View。即使有人发现了一些技巧,它也可能不兼容并会导致问题。
我认为这提供了三种选择,具体取决于您的要求:
- 表面视图上方的视图
将“表面视图”用于“相机”预览,并在其顶部堆叠视图。这种方法的缺点是,在“普通”视图上绘制a)较慢,而b)在UI线程中进行。如果您自己实现线程,则可以解决b)。但是通常,如果叠加层包含UI元素或一些不需要频繁更新的Drawables之类的东西,那可能就是解决方法。
- 在SurfaceView中执行所有操作
这样可以在运行时提供更好的性能和更少的开销。您只有一个SurfaceView。在SurfaceView上合成叠加层并在那里绘制所有内容。当然,您可以将两种方法结合起来。
- 在GLSurfaceView中做所有事情
这可能是获得真正性能的方法。像上面一样,但是在GLSurfaceView中将摄像机视图渲染为OpenGL纹理。



