【问题标题】:Unable to draw on top of a custom SurfaceView class无法在自定义 SurfaceView 类之上绘制
【发布时间】:2013-03-13 16:25:56
【问题描述】:

我使用example guide 创建了一个名为CameraPreview 的类,它继承自SurfaceView 类,并显示相机预览。我还创建了另一个名为 DrawOnTop 的自定义视图类,它直接从 View 继承,我使用它在预览顶部绘制文本和其他项目。每个视图类都可以自己正常工作,但是当我将两个视图都加载到活动中时,CameraPreview 始终占主导地位,并且 DrawOnTop 类中的任何对象或文本都不会出现在相机预览的顶部。

因为我使用了两个自定义视图类,所以我不会费心在活动的 onCreate 中从 XML 中扩充任何视图类,因此 onCreate 不包含对 setContentView(...) 的任何调用。相反,我实例化每个视图类,并使用 addContentView(...) 将每个视图对象加载到活动的根视图中,即

CameraPreview preview = new CameraPreview(this); 
addContentView(preview, new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));

DrawOnTop drawontop = new DrawOnTop(this);       
addContentView(drawontop, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
drawontop.setVisibility(View.VISIBLE);
drawontop.bringToFront();

我查看了活动的根视图,结果发现它是 FrameLayout 类型。正如我上面所说,这种方法对每个视图都适用。

为了让 DrawOnTop 类出现在相机预览的顶部,我尝试过使用 BringToFront(),但它没有任何效果。我正在运行 Android 版本 4.1.1 的三星 Galaxy Note 2 LTE 上测试该应用程序。

谁能告诉我我做错了什么?

【问题讨论】:

  • 您能否提供要在其中添加自定义视图的 xml 文件?
  • 感谢 Rajesh 的提问,但我没有使用任何 XML,因此在 onCreate 方法中没有调用 setContentView(...)。相反,我自己将视图加载到活动中。我现在已经编辑了我的问题并添加了我用来执行此操作的代码。正如我所说,这种方法对每个视图都适用。
  • Surfaceview 在我的经验中有点不寻常。我过去曾遇到过问题。当我在笔记本电脑前时,我会挖掘出一些可能相关的信息。
  • 那将不胜感激,克里。 :-)

标签: android android-camera surfaceview android-view


【解决方案1】:

此链接可能会有所帮助:How to draw an overlay on a SurfaceView used by Camera on Android?

您只需将 CameraPreview 视图放入 FrameLayout 中,并将 DrawOnTop 视图与 FrameLayout 处于同一级别,即

FrameLayout frame = new FrameLayout(this);
addContentView(frame, new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
CameraPreview preview = new CameraPreview(this); 
frame.addView(mPreview);

DrawOnTop drawontop = new DrawOnTop(this);       
addContentView(drawontop, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
drawontop.setVisibility(View.VISIBLE);
drawontop.bringToFront();

这对你有用吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-14
    • 2012-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-27
    相关资源
    最近更新 更多