=============================================================
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 及相关概念的更多相关文章

  1. Android多媒体之view,SurfaceView,GLSurfaceView

    1.相关概念 不用画布,直接在窗口上进行绘图叫做无缓冲绘图. 用了一个画布,将所有内容都先画到画布上,在整体绘制到窗口上,就该叫做单缓冲绘图, 那个画布就是一个缓冲区.用了两个画布,一个进行临时的绘图 ...

  2. SurfaceView 绘制分形图

    之前一直做的是应用类,这次抽时间,参考网上资料实践了下SurfaceView.目标是在页面上画一个科赫曲线的分形图. 代码如下: package com.example.fredric.demo02; ...

  3. IDDD 实现领域驱动设计-上下文映射图及其相关概念

    上一篇:<IDDD 实现领域驱动设计-理解限界上下文> 距离上一篇有几天时间了,<实现领域驱动设计>第三章的内容都是围绕一个词-上下文映射图,我大概断断续续看了几天,总共看了两 ...

  4. Android中surface,surfaceview,sufaceholder以及surface客户端的关系

    这里以照相机camera功能的实现来解释surface,surfaceview,sufaceholder以及surface客户端(本例子中指的是camera)的关系,surface及其client(客 ...

  5. android surfaceView 黑屏

    最近在做一个viewpager + fragment 切换的页面, 其中一个fragment 打开摄像头,需要surfaceView,但是当切换到这个fragment的前一个个时,这个fragment ...

  6. [原创]java WEB学习笔记105:Spring学习---AOP介绍,相关概念,使用AOP,利用 方法签名 编写 AspectJ 切入点表达式

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  7. android下面使用SurfaceView+ mediaPlayer播放视频

    final SurfaceView surfaceView = new SurfaceView(StartupActivity.this); StartupActivity.this.mediaPla ...

  8. Android 之surfaceView (画动态圆圈)

      通过之前介绍的如何自定义View, 我们知道使用它可以做一些简单的动画效果.它通过不断循环的执行View.onDraw方法,每次执行都对内部显示的图形做一些调整,我们假设 onDraw方法每秒执行 ...

  9. Surface与SurfaceView、SurfaceHolder

    什么是Surface? android API的解释是:Handle onto a raw buffer that is being managed by the screen compositor ...

随机推荐

  1. AspectCore.Extension.Reflection : .NET Core反射扩展库

    在从零实现AOP的过程中,难免会需要大量反射相关的操作,虽然在.net 4.5+/.net core中反射的性能有了大幅的优化,但为了追求极致性能,自己实现了部分反射的替代方案,包括构造器调用.方法调 ...

  2. win8.1 安装

    下载了Windows8.1企业版的iso文件,文件名称:cn_windows_8_1_enterprise_x86_dvd_2791409.iso 下载地址: http://msdn.itellyou ...

  3. python初步(附学习思维导图)

    python,原意为蟒蛇,至于它的发展史,度娘应该比我讲述的更为专业/偷笑.这里我们要梳理的是整个学习的脉络,当然,今后的随笔也会从基础部分说起,希望能给进门python的小伙伴一些建议. 一.环境的 ...

  4. python学习之第一课时--初始python

    Python前世今世 python是什么 python是一门多种用途的编程语言,时常在扮演脚本语言的角色 python流行原因 软件质量 提高开发者效率(python代码大小为C/java的1/3-1 ...

  5. NandFlash ECC 校验

    ECC的全称是Error Checking and Correction,是一种用于Nand的差错检测和修正算法.如果操作时序和电路稳定性不存在问题的话,NAND Flash出错的时候一般不会造成整个 ...

  6. 【ASP.NET MVC 学习笔记】- 17 Model验证

    本文参考:http://www.cnblogs.com/willick/p/3434483.html 1.Model验证用于在实际项目中对用户提交的表单的信息进行验证,MVC对其提供了很好的支持. 2 ...

  7. mybatis xml中使用where 条件中的in方法

    <select id="queryCount" resultType="cn.bnsr.edu_yun.view.FileView"> SELECT ...

  8. python 模块的概念介绍

    模块 模块:本质就是一个.py文件分为三部分:内置模块.第三方模块,自定义模块 模块: 顶层文件 python模块python模块可以将代码量较大的程序分割成多个有组织的.彼此独立但又能互相交互的代码 ...

  9. iOS下OpenCV开发用OC还是Swift

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃 其实标题中这个问题并不准确,准确的说法应该是iOS下的OpenCV开发是使用OC还是Swift ...

  10. EF6中使用事务的方法

    默认情况当你执行SaveChanges()的时候(insert update delete)来操作数据库时,Entity Framework会把这个操作包装在一个事务里,当操作结束后,事务也结束了. ...