我已经使用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类的顶部绘制所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)