SurfaceView中lockCanvas返回值为null
来源:互联网 发布:网店数据分析毕业论文 编辑:程序博客网 时间:2024/06/17 17:54
最近在做一个安卓项目,需要使用TextureView或者SurfaceView对相机进行预览,在预览的同时又想要在屏幕上进行绘图操作。
于是使用lockCanvas()获取Canvas对象,但是程序就会在运行时候报错:null reference,程序崩溃。检查一下lockCanvas返回的canvas的确是null。
花了很长时间查错,终于在Android开发官网上找到了原因:
http://developer.android.com/intl/zh-cn/reference/android/view/TextureView.html
在网页的最后一段:
It is important to note that only one producer can use the TextureView. For instance, if you use a TextureView to display the camera preview, you cannot use lockCanvas() to draw onto the TextureView at the same time.
也就是说,只能有一个用户使用TextureView,在提供camera preview的同时是不可以进行Canvas的绘制的,lockCanvas()的值就是null。
在StackOverFlow上也有相似的问题:
http://stackoverflow.com/questions/2933882/how-to-draw-an-overlay-on-a-surfaceview-used-by-camera-on-andrOid
问题的原因同样是TextureView给Camera做预览以后,又进行绘图。
最后采取的解决方法是,再建一个ImageView,把这个ImageView显示在TextureView的前面,然后重写ImageView的onDraw方法,最后在屏幕上看到的就是TextureView上“绘制”了ImagView,这样就是用两个图像叠加进行显示。
- SurfaceView中lockCanvas返回值为null
- surfaceHolder.lockCanvas()返回null
- Android中的surfaceHolder.lockCanvas(null)返回为null详解
- lockCanvas为NULL的原因
- IOS开发中返回值为null时的处理
- php中json_decode返回值为NULL的解决方法
- fragment中findFragmentById返回为null问题
- jquery的ajax中dataType="json",返回值判断是否为空,是否为null
- FormsAuthenication.Encrypt(FormsAuthenticationTicke)返回值为null
- findViewById返回为NULL
- js中 if 表达式为undefined null {}NaN 时 返回 什么值
- 关于POI中sheet.getRow方法返回值为null的问题 (NullPointException)
- ibatis中使用insert后,返回值为null的解决方案
- 关于android 中java 的.class.getResourceAsStream()返回值为null
- spring boot 返回的json中去掉值为null的属性
- 表中字段值为NULL时,hibernate查询不会返回该字段
- 【android中findViewById返回控件指针为NULL】
- oracle数据库中有数据 findone返回的为null
- Symfony2一级目录结构
- C++每日一练(多重继承)
- C++输入日期判断是星期几
- 「枫桥夜泊」一诗
- 基于snowflake的ID生成器
- SurfaceView中lockCanvas返回值为null
- 启动模式
- android viewpager引导页+圆点详解
- SDL2.0配置说明
- python 报错:unexpected indent
- WPF学习笔记:(二)数据绑定模式与INotifyPropertyChanged接口
- C# Types
- TC怎么接入百宝云注册码系统V2
- alsa例程