标签:android android-camera android-view surfaceview
我已经使用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,android-camera,android-view,surfaceview 来源: https://codeday.me/bug/20191013/1910004.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。