Zai*_*ain 6 java transparency android surfaceview augmented-reality
我正在尝试为Android构建增强现实应用程序,并遇到了分层表面视图的问题.我需要一个表面视图来显示我将覆盖图形的相机预览,我需要一个表面视图来绘制我的图形.第二个表面也需要在相机预览上方绘制,但具有透明背景.在我当前的实现中,我有两个表面视图工作并按预期显示,但背景不透明,因此没有第二个表面视图的外观,绘制的图形叠加在相机预览表面视图上.怎么能实现这一目标?在搜索了大量的堆栈溢出问题以及其他论坛时,我遇到了许多与此事有关的冲突意见.有人说在Android中分层表面视图是不可能的,而有些人则认为这是使用不同布局的问题(FrameLayout vs. LinearLayout?)具体来说,我的实现包括两个视图:一个类,CustomCameraView,它扩展了SurfaceView,以及一个类,CustomDrawView,它还扩展了FrameLayout中包含的SurfaceView,CustomDrawView出现在CustomCameraView之后.这些如何分层,以便CustomDrawView似乎叠加在CustomCameraView上?
我想很多人都试过这个.Google Enginee(此处)明确指出,您应该避免堆叠表面视图.即使有人发现了一些技巧,但它可能不兼容并会导致问题.
我认为这有三种选择,具体取决于您的要求:
使用"表面视图"进行摄像头预览,并在其顶部堆叠视图.这种方法的缺点是,绘制"普通"视图a)较慢,b)发生在UI线程中.如果你自己实现线程,你可以绕过b).但一般来说,如果您的叠加层包含类似UI元素或一些不需要经常更新的Drawables,那么可能就是这样.
这将在运行时提供更好的性能和更少的开销.你只有一个SurfaceView.在SurfaceView上合成叠加层并在那里绘制所有内容.当然,您可以结合使用这两种方法.
这可能是实现真正表现的方法.如上所述,但在GLSurfaceView中将相机视图渲染为OpenGL纹理.
| 归档时间: |
|
| 查看次数: |
6551 次 |
| 最近记录: |