android-无法在自定义SurfaceView类的顶部绘制

概述我已经使用exampleguide创建了一个名为CameraPreview的类,该类继承自SurfaceView类,并显示摄像机预览.我还创建了另一个名为DrawOnTop的自定义视图类,该类直接从View继承,我用它在预览顶部绘制文本和其他项目.每个视图类都可以正常工作,但是当我将两个视图都加载到活动中时,Camer

我已经使用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的Samsung galaxy Note 2 LTE上测试该应用程序.

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

解决方法:

该链接可能有帮助: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();

那对你有用吗?

总结

以上是内存溢出为你收集整理的android-无法在自定义SurfaceView类的顶部绘制全部内容,希望文章能够帮你解决android-无法在自定义SurfaceView类的顶部绘制所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1093172.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存