无法在自定义 SurfaceView 类之上进行绘制

2023-11-29

我用过示例指南创建一个名为 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 的 Samsung Galaxy Note 2 LTE 上测试该应用程序。

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


此链接可能有帮助:如何在 Android 上的 Camera 使用的 SurfaceView 上绘制叠加层?

您只需将 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();

那对你有用吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法在自定义 SurfaceView 类之上进行绘制 的相关文章

随机推荐

  • 为什么 CMD 转义字符有魔力而不是转义换行符

    我尝试执行简单的脚本 set list a b c echo list 输出是 a b a b 虽然我预计它是 a b c 引号似乎破坏了一切 因为如果 b 没有引号 则一切正常 我也很奇怪为什么它只在第二条新线转义时中断 那么 为什么输出
  • 如何在VS2013中隐藏引用计数?

    Visual Studio 2013 引入了一项新功能 它可以显示每种方法的使用次数 我觉得它不是很有用 而且它弄乱了我的文件间距 我如何禁用它 似乎找不到这个选项 我猜您可能正在运行 VS2013 Ultimate 的预览版 因为它没有出
  • 将 *array 分配给指针

    以下内容摘自Harbinson Steele C 参考手册 第五版 根据书中的两个作业p是等价的 7 5 6 地址运算符 int a 10 p p a p a 然而 根据 C faq问题 6 12 a是指针类型int然而 a是指向数组的指针
  • 无法将 macOS-arm64 的库与 macOS-arm64 的可执行文件链接

    I have some trouble with creating a build system on a Monterey M1 MacBook 到目前为止 我有一个可用的 Makefile 来构建和链接库 简化 g c所有 cpp 文件
  • Android NDK 中的 ICU 库

    我正在尝试为依赖于 ICU 库 libicuuc so 和 libicui18n so 的 C 库创建 JNI 包装器 我尝试在 NDK 标准版本和 CrystaX 版本 在 Mac OS X 机器上 中构建 ICU4C 并不断遇到如下链接
  • 从 Android Activity 调用 javascript 函数

    我在主活动中使用以下代码 其给出的函数 display 未定义 public class cordovaExample extends DroidGap Context mcontext private novel n private Se
  • Spring + Hibernate +JTA - HibernateTransactionManager 或 JTATransactionManager

    我要整合Spring and 休眠并使用JTA用于管理交易 我还想将事务处理委托给应用程序服务器 在我的例子中是 JBoss 我对 的配置有疑问事务管理器 春天的豆子 1 我们可以使用Hibernate事务管理器并设置属性hibernate
  • 设计一个仅适用于 Android 平板电脑的应用程序 [重复]

    这个问题在这里已经有答案了 假设我想构建 2 组不同的仅限平板电脑的布局 一台适用于 600dp 7 英寸平板电脑 1024x600 一台适用于 720dp 10 英寸平板电脑 1280x720 或 1280x800 据我所知 在 andr
  • 无法上传图像(HttpPostedFileBase 为 Null)

    我尝试使用图像上传器 但是当我单击浏览并选择图像然后提交表单时 HttpPostedFileBase 为空 我的实施有遗漏吗 请帮忙 View
  • 如何解决共享 Google Apps 脚本库的“此应用程序被阻止”错误?

    我正在尝试创建一个可以在 Google 表格电子表格中重复使用的 Google Apps 脚本 GAS 库 下列的这些说明 这是我到目前为止所做的 创建了一个新项目谷歌云平台 在步骤 1 中为项目启用 Google Sheets API 在
  • 用户卸载 Android 应用程序时的通知

    当用户从他 她的 Android 设备卸载我的应用程序时 有没有办法收到通知 不 您可以使用 PACKAGE REMOVED 广播接收器获取其他应用程序卸载事件 但不能获取应用程序本身卸载的事件 因为它已被删除 请参阅文档here
  • 如何更新正在运行的 EXE?

    如何用新版本替换正在运行的 EXE 你能行的this way 重命名正在运行的 EXE 将新版本复制到旧名称 当新版本启动时删除重命名的EXE 请注意 这绝对是不推荐的行为
  • Javascript 从单独的 php 脚本获取输出

    我希望 javascript 能够使用 jQuery 调用 php 脚本 它只是回显一个字符串 I think get是正确的方法 但不太确定 然后我想使用返回的字符串作为 JavaScript 变量 get 确实是可行的方法 首先 您需要
  • 如何使用 .NET 4 将自定义属性添加到 Word 文档?

    使用 NET 4 如何向文档添加自定义属性 我假设事情是这样的 WordApp an instance of Microsoft Office Interop Word Application ActiveDocument CustomDo
  • Python:Pandas Dataframe 如何将整列与标量相乘

    如何将数据帧给定列的每个元素与标量相乘 我尝试过寻找SO 但似乎找不到正确的解决方案 做类似的事情 df quantity 1 trying to multiply each row s quantity column with 1 给我一
  • 如何通过 JNDI 检索 LDAP 密码

    我可以通过 JNDI 读取 LDAP 中存储的密码 但结果是一些乱码字符 那么我该如何解密呢 下面是我的代码 public static void main String args String INITCTX com sun jndi l
  • 如何在 BASH 中将 csv 文件读入二维数组?

    如何在 BASH 中将 csv 文件读入二维数组 该脚本需要足够动态 可以获取行数和列数可变的 csv 文件 例如 如果我有一个 csv 文件 如下所示 AVERAGE STDEV MAX 17 18 19 or AVERAGE STDEV
  • 文件下载后执行页面导航并发送重定向

    我需要找到一种在生成文件下载后执行页面导航的方法 到目前为止 我已经准备好文件下载并开始工作 FileInputStream stream new FileInputStream file FacesContext fc FacesCont
  • python 正则表达式仅匹配最后一次出现

    我在为重复字符串模式实现正则表达式时遇到一些问题 gt gt gt re findall w d a b c d e f e f 我也想购买其他物品 非常感谢帮助 去除 你的模式匹配all出现次数 但该组只能捕获一次出现情况 您不能以这种方
  • 无法在自定义 SurfaceView 类之上进行绘制

    我用过示例指南创建一个名为 CameraPreview 的类 该类继承自 SurfaceView 类 并显示相机预览 我还创建了另一个名为 DrawOnTop 的自定义视图类 它直接从 View 继承 我用它来在预览顶部绘制文本和其他项目