表面视图SurfaceView在使用Camera的一般情况下是够使用了,但是有一些限制。因为表面视图不是通过onDraw方法和 dispatchDraw方法进行绘图,所以无法使用View的基本视图方法;各种视图变化方法均无法奏效,包括透明度变化方法setAlpha、平移方法setTranslation、缩放方法setScale、旋转方法 setRotation等,甚至连最基础的背景图设置方法setBackground都失效了。
为了解决表面视图的不足之处,Android在4.0之后引入了纹理视图TextureView。与表面视图相比,纹理视图并没有创建一个单独的绘图表面用来绘制,可以像普通视图一样执行变换操作,也可以正常设置背景图。
下面是TextureView的常用方法:
lockCanvas:锁定并获取画布。
unlockCanvasAndPost:解锁并刷新画布。
setSurfaceTextureListener: 设置表面纹理的监听器。该方法相当于SurfaceHolder的addCallback方法,用来监控表面纹理的状态变化事件。方法参数为SurfaceTextureListener监听器对象,需重写以下4个方法:
isAvailable:判断表面纹理是否可用。
getSurfaceTexture:获取表面纹理。
//获取纹理视图
TextureView textureView=findViewById(R.id.textureView);
//设置纹理视图监听(相当于表面视图增加回调)
textureView.setSurfaceTextureListener(new TextureView.SurfaceTextureListener() {
//纹理视图可用时调用(创建成功时)
public void onSurfaceTextureAvailable(@NonNull SurfaceTexture surfaceTexture, int i, int i1) {
//锁定并获取画布
Canvas canvas=textureView.lockCanvas();
//创建画笔
Paint paint=new Paint();
paint.setColor(Color.RED);
paint.setAntiAlias(true);
paint.setStrokeWidth(10);
paint.setStyle(Paint.Style.STROKE);
//绘图
canvas.drawCircle(150,150,50,paint);
//解锁并刷新画布
textureView.unlockCanvasAndPost(canvas);
}
//纹理视图尺寸变更时调用
public void onSurfaceTextureSizeChanged(@NonNull SurfaceTexture surfaceTexture, int i, int i1) {
}
//纹理视图销毁时调用
public boolean onSurfaceTextureDestroyed(@NonNull SurfaceTexture surfaceTexture) {
return false;
}
//纹理视图更新时调用
public void onSurfaceTextureUpdated(@NonNull SurfaceTexture surfaceTexture) {
}
});
tag:SurfaceView;表面视图;TextureView;纹理视图;Camera;相机;Canvas
文章浏览阅读4.8k次。Getting Started Guide本指南将讲解在 Unity 中打开其中一个示例工程 ,训练一个Agent,并将训练过的模型嵌入到 Unity 环境中的完整过程。阅读本教程之后,您应该能够训练任何示例环境。如果你不熟悉的 Unity Engine,查看我们的 Background: Unity 章节。此外,如果你不熟悉机器学习,请查看我们的 Background: Machine Learning 页面,以了解简要概述和有用的建议。我们将使用 3D Balance Ball 环境,它包含_拖动3d球模型位于assets/ml-agents/examples/3dball/tfmodels进入model下的财产be
文章浏览阅读2.8k次,点赞6次,收藏24次。通道之间校准是因为一个主设备和三个从设备之间的频率、相位、振幅不匹配。然后进行距离维度FFT,根据物体大致距离和距离分辨率,得到所在距离维度尖峰所在频点index及其复数值(复数数据),组成12*16的复数矩阵。每一块板子都要生成一个校准矩阵,将雷达原始数据相乘之后,在进行其它功能的开发。ti awr2243使用的是4片级联方案,4个三发四收雷达板,总共12个发射天线16个接收天线,192个虚拟通道。为补偿用的调频斜率;为参考虚拟通道的尖峰索引的复数值;为别的虚拟通道的尖峰索引的复数值;_awr2243
文章浏览阅读2.1w次,点赞2次,收藏22次。本文教程针对的事2021年7月2日时国税查验平台的js分析,其中版本号为V2.0.06_009。主要分析内容为key9和flwq39以及fplx这3个参数的算法,其中key9分为获取验证码阶段和查验阶段,算法有所区别,flwq39同理。教程开始:一、官方网址https://inv-veri.chinatax.gov.cn/index.html二、请求分析国税查验平台请求共分为2个,第一个请求获取验证码,第二个请求为输入验证码后查验数据并返回发票详细信息。第一步:安装证书基础:谷歌_“http://inv—veri.chinatax.gov.cn/”
文章浏览阅读3.7k次。ASM驱动安装与ASM盘建立(一)(转自 求道的路上http://space.itpub.net/17203031/viewspace-692538)上一篇 / 下一篇 2011-04-14 20:53:33 / 个人分类:ASM查看( 207 ) / 评论( 3 ) / 评分( 3 / 0 ) 前段时间安装虚拟Linux上的ASM实例,中间反复了几次,不过_asm1166驱动
文章浏览阅读4.1w次,点赞34次,收藏127次。Python使用Scipy库中的io.loadmat读取.mat文件,并获取数据部分读取方法很简单,只需要使用scipy.io库即可,Python代码入下:import scipy.io as sioyFile = 'y2.mat' #相对路径datay=sio.loadmat(yFile)print datay此时输出的datay是一个字典格式的输出,如下:{‘y’:..._io.loadmat
文章浏览阅读2.6k次。测试教程网(虫师)http://www.testclass.net/rf/(虫师)Robot Framework自动化测试 ---视频与教程免费分享 电子书下载 《robot framework 自动化测试》 上课视频分享《robot framework上课视频》 最新录制网易云课堂《robot framework自动化测试入门》 最..._pycharm ride
文章浏览阅读5.9k次,点赞4次,收藏6次。第一篇:Scala Scalatest Maven 单元测试配置(测试报告和覆盖率报告)第二篇:Scala Scalatest Maven 集成测试配置环境:Maven: 3.3.9Scala: 2.11.11Scalatest_2.11: 3.0.1这次配置单元测试没有使用Junit,网上很多的测试配置都是基于Junit的,所以查了很久终于找到了一些和scalatest配套..._scalatest 报告
文章浏览阅读3.2k次,点赞2次,收藏8次。将一段压缩后的字符串解压缩,并且排序输出解压规则:每个字符串后面跟随一个数字,表示这个字符串的重复次数。例如,“a5"解压后的结果为"aaa;"abc3"解压后的结果为abcabcabc。排序规则1、根据每个字符串的重复次数升序排序,然后输入结果例如,“a3b2”,输出的结果为“ obama2、如果字符重复次数一样,则根据ASC!码顺序做升序排序,然后输出结果。例如,“..._字符串解压 华为
文章浏览阅读355次。如果A点的电压小于M1的过零电压(即VA _state relay
文章浏览阅读2.2k次,点赞6次,收藏29次。1. 简介input 子系统就是管理输入的子系统,和pinctrl、gpio 子系统一样,都是 Linux 内核针对某一类设备而创建的框架。按键、鼠标、键盘、触摸屏等都属于输入设备,linux内核为此专门做了一个叫做input子系统的框架来处理输入事件。输入设备本质上还是字符设备,只是在此基础上套上了input框架,用户只需要负责上报输入事件,比如按键值、坐标等信息。对于驱动编写者而言不需要去关心应用层的事情,我们只需要按照要求上报这些输入事件即可为此input子系统分为 input驱动层、in_linux input子系统
文章浏览阅读2.8k次。背景数据库中要有必要的数据信息。比如流程定义表,流程定义的部署,流程实例的启动。根据ID删除,根据的是act_ru_deployment表的id进行删除的。这个删除操作影响了哪些表中的数据记录呢?流程定义信息的删除,操作的是act_ru_deployment表。是因为我们部署流程定义的信息的时候,其实就是把bpmn中的数据写到数据库中而已。因此,它删除的时候,没有找act_ru_proc..._activiti删除model表还要删除什么表
文章浏览阅读2.1k次,点赞4次,收藏19次。重新分配centos磁盘空间,将其中一个挂载点的空间分配给另一个挂载点_centos重新分配磁盘空间