SurfaceView 及相关概念

=============================================================
SurfaceView
=============================================================
-------------------------------------------------------------
1 相关类
-------------------------------------------------------------
1.1 surface
1.1.1 意思:表面
1.1.2 可以理解为底层数据缓冲器,和硬件显卡绘制的入口句柄
1.1.3 Surface就是一个用来画图形(graphics)或图像(image)的地方
1.1.4 Surface中有一个Canvas成员,专门用于画图的。
1.2 surfaceView
1.2.1 extends View
1.2.1.1 拥有View的基本属性
1.2.2 surfaceView是在一个新起的单独线程
中可以重新绘制画面而View必须在UI
的主线程中更新画面。
1.2.2.1 意味着不需要等待主线程把所有View的绘制做完,
处理完输入输出,Hnadler.looper等事件,直接下
一帧绘制。
1.2.3 SurfaceView 可以在线程中直接操作
1.2.4 必然SurfaceView拥有Surface也就拥用Canvas
1.2.5 通过Canvas对象来进行各种绘制:图形,图片,颜色,字符窜等
1.2.6 SurfaceView拥的Canvas对象的特点
1.2.6.1 不普通View中的Canvas相同,工作在独立线程。
1.2.6.2 独占性:不能多个实例同时使用
1.2.6.3 有效时间:间于在SurfaceHolder.Callback.surfaceCreated()和 SurfaceHolder.Callback.surfaceDestroyed()这两个方法之间
1.2.6.4 在布局中使用SurfaceView,加载完成后,直接调用Canvas会是null
1.3 SurfaceHolder
1.3.1
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
}
1.3.2 @Override
public void surfaceCreated(SurfaceHolder holder) {
}
1.3.3 @Override
public void surfaceCreated(SurfaceHolder holder) {
}
1.4 Canvas
1.4.1 获取
1.4.1.1 Canvas canvas = mSurfaceHolder.lockCanvas();
1.4.2 提交
1.4.2.1 mSurfaceHolder.unlockCanvasAndPost(canvas);
1.4.3 画布功能
1.4.3.1 drawColor()
1.4.3.2 drawBitmap
-------------------------------------------------------------
2 使用
-------------------------------------------------------------
2.1 自定义View继承SurfaceView
2.2 实现SurfaceHolder.Callback接口
2.2.1 目的:掌握SurfaceView的生命周期
2.2.2 在SurfaceHolder.Callback.surfaceCreated()和 SurfaceHolder.Callback.surfaceDestroyed()这
两个方法之间进行工作
2.3 获取Canvas对象
2.3.1 lockCanvas()
2.3.2 SurfaceHolder.lockCanvas()
2.3.2.1 建议在SurfaceHolder.Callback.surfaceCreated()
之后调用,确保返回有效对象。
2.3.3 SurfaceView.lockCanvas()
2.4 开启线程操作Canvas刷新
-------------------------------------------------------------
3 GLSurfaceView
-------------------------------------------------------------
3.1 SurfaceView的子类,具有SurfaceView的所有特性
3.2 结合GLSurfaceView.Renderer来封装使用
3.3 提供openGL与surfaceView整合方案
-------------------------------------------------------------
4 TextureView
-------------------------------------------------------------
-------------------------------------------------------------
5 SurfaceTexture
-------------------------------------------------------------
SurfaceView 及相关概念的更多相关文章
- Android多媒体之view,SurfaceView,GLSurfaceView
1.相关概念 不用画布,直接在窗口上进行绘图叫做无缓冲绘图. 用了一个画布,将所有内容都先画到画布上,在整体绘制到窗口上,就该叫做单缓冲绘图, 那个画布就是一个缓冲区.用了两个画布,一个进行临时的绘图 ...
- SurfaceView 绘制分形图
之前一直做的是应用类,这次抽时间,参考网上资料实践了下SurfaceView.目标是在页面上画一个科赫曲线的分形图. 代码如下: package com.example.fredric.demo02; ...
- IDDD 实现领域驱动设计-上下文映射图及其相关概念
上一篇:<IDDD 实现领域驱动设计-理解限界上下文> 距离上一篇有几天时间了,<实现领域驱动设计>第三章的内容都是围绕一个词-上下文映射图,我大概断断续续看了几天,总共看了两 ...
- Android中surface,surfaceview,sufaceholder以及surface客户端的关系
这里以照相机camera功能的实现来解释surface,surfaceview,sufaceholder以及surface客户端(本例子中指的是camera)的关系,surface及其client(客 ...
- android surfaceView 黑屏
最近在做一个viewpager + fragment 切换的页面, 其中一个fragment 打开摄像头,需要surfaceView,但是当切换到这个fragment的前一个个时,这个fragment ...
- [原创]java WEB学习笔记105:Spring学习---AOP介绍,相关概念,使用AOP,利用 方法签名 编写 AspectJ 切入点表达式
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- android下面使用SurfaceView+ mediaPlayer播放视频
final SurfaceView surfaceView = new SurfaceView(StartupActivity.this); StartupActivity.this.mediaPla ...
- Android 之surfaceView (画动态圆圈)
通过之前介绍的如何自定义View, 我们知道使用它可以做一些简单的动画效果.它通过不断循环的执行View.onDraw方法,每次执行都对内部显示的图形做一些调整,我们假设 onDraw方法每秒执行 ...
- Surface与SurfaceView、SurfaceHolder
什么是Surface? android API的解释是:Handle onto a raw buffer that is being managed by the screen compositor ...
随机推荐
- SpringBoot01 InteliJ IDEA安装、Maven配置、创建SpringBoot项目、属性配置、多环境配置
1 InteliJ IDEA 安装 下载地址:点击前往 注意:需要下载专业版本的,注册码在网上随便搜一个就行啦 2 MAVEN工具的安装 2.1 获取安装包 下载地址:点击前往 2.2 安装过程 到官 ...
- aspnet中通过多条件筛选来显示数据的实现
UI图: 功能实现: 1.勾选住哪个选项之后,就加入了筛选.支持姓名的模糊查询. 2.对筛选出来的数据可以直接修改,并更新回数据库. 说明:显示的数据来自T_User表.数据显示控件使用的是 List ...
- win10 UWP读写文件
C# uwp应用的文件读写最常见错误就是没有权限. 而最简单的方法是对已知的文件路径进行访问 已知的文件路径常见的是自身的路径 权限这个和之前不同,UWP读写文件多用StorageFile来读写文件 ...
- 张高兴的 Windows 10 IoT 开发笔记:BH1750FVI 光照度传感器
BH1750FVI 是一款 IIC 接口的数字型光强度传感器集成电路.下面介绍一下其在 Windows 10 IoT Core 环境下的用法. 项目运行在 Raspberry Pi 2/3 上,使用 ...
- 2017上海QCon之旅总结(上)
本来这个公众号的交流消息中间件相关的技术的.这周去上海参加了QCon,第一次参加这样的技术会议,感受挺多的,所以整理一下自己的一些想法接公众号和大家交流一下. 下面进入正题,从自己参加了的一些分享中挑 ...
- Servlet 笔记-servlet实例
Servlet 是服务 HTTP 请求并实现 javax.servlet.Servlet 接口的 Java 类.Web 应用程序开发人员通常编写 Servlet 来扩展 javax.servlet.h ...
- LeetCode 78. Subsets(子集合)
Given a set of distinct integers, nums, return all possible subsets. Note: The solution set must not ...
- json格式转化成map
public static Map<String, Object> parseJSON2Map(String jsonStr) { Map<String, Object> ma ...
- angular之scope详解
AngularJS的一些指令会创建子作用域,而子作用域会继承自父作用域,大致可分为以下3种 1.创建子作用域并继承父作用域的指令 ng-repeat ng-include ng-switch ng-c ...
- JavaScrpit中异步请求Ajax实现
在前端页面开发的过程中,经常使用到Ajax请求,异步提交表单数据,或者异步刷新页面. 一般来说,使用Jquery中的$.ajax,$.post,$.getJSON,非常方便,但是有的时候,我们只因为需 ...