0

我碰到以下问题: 我正在使用SurfaceHolder在SurfaceView上显示CameraPreview,如Camera Dev Guide所述。所以它提到我必须像这样设置SurfaceHolder的类型;在SurfaceView中显示CameraPreview和自定义视图

// deprecated setting, but required on Android versions prior to 3.0 
mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

不幸后,设置mHolder.lockCanvas()会失败,所以我不能对画布画了。 是否有可能在单个SurfaceView上绘制PreviewFrame以及自己的Views?

如果不是,是否有可能渲染两个SurfaceView,以便摄像机将用作背景,第二个SurfaceView将渲染它的任何视图'顶部'? 运行此最佳方法是什么?

回答

1

是的,我有艾雷迪这样做。你可以做的是,你可以创建一个相对布局,然后你可以添加你的表面视图到适当的布局参数。那么你可以使用适当的布局参数在相同的相对布局上添加另一个视图。

+0

因此,它不可能在一个表面视图中渲染它,我必须采用两个SurfaceViews? – 2012-04-27 07:38:02

+0

如果您只有一个表面视图,那么只需添加第二个表面视图就可以了,实际上您正在将相关布局中的所有内容都添加到我已告诉您的该技术中。 – 2012-04-27 10:00:13

+0

刚才我已经修正了一些glview在完整屏幕背景上的问题,并且相机预览位于屏幕角落,小尺寸和一些按钮就在那里。如果你的情况是相似的,那么可能是我可以帮你。 – 2012-04-27 11:28:43