当前位置: 首页 > article >正文

SurfaceView、SurfaceHolder与Surface

相关文章
  • SurfaceView、SurfaceHolder与Surface
  • TextureView、SurfaceTexture与Surface

按照官方文档的说法,SurfaceView继承自View,并提供了一个独立的绘图层,你可以完全控制这个绘图层,比如说设定它的大小,所以SurfaceView可以嵌入到View结构树中,但是需要注意的是,由于SurfaceView直接将绘图表层绘制到屏幕上,所以和普通的View不同的地方就在与它不能执行Transition,Rotation,Scale等转换,也不能进行Alpha透明度运算。SurfaceView的Surface排在Window的Surface(也就是View树所在的绘图层)的下面,SurfaceView嵌入到Window的View结构树中就好像在Window的Surface上强行打了个洞让自己显示到屏幕上,而且SurfaceView另起一个线程对自己的Surface进行刷新。特别需要注意的是SurfaceHolder.Callback的所有回调方法都是在主线程中回调的。

SurfaceView、SurfaceHolder、Surface的关系可以概括为以下几点:
* SurfaceView是拥有独立绘图层的特殊View
* Surface就是指SurfaceView所拥有的那个绘图层,其实它就是内存中的一段绘图缓冲区。
* SurfaceView中具有两个Surface,也就是我们所说的双缓冲机制
* SurfaceHolder顾名思义就是Surface的持有者,SurfaceView就是通过过SurfaceHolder来对Surface进行管理控制的。并且SurfaceView.getHolder方法可以获取SurfaceView相应的SurfaceHolder。
* Surface是在SurfaceView所在的Window可见的时候创建的。我们可以使用SurfaceHolder.addCallback方法来监听Surface的创建与销毁的事件。

下面我们写一个Demo来对普通的View与SurfaceView进行区别。

普通的View

我们先写一个继承自View的DrawView,我们每过1秒进行一次重绘

public class DrawView extends View {private static final int DELAY = 1000;private Paint mPaint;private int mCount;private Handler handler = new Handler() {@Overridepublic void handleMessage(Message msg) {mCount++;invalidate();handler.sendEmptyMessageDelayed(0x0001, DELAY);}};public DrawView(Context context) {this(context, null);}public DrawView(Context context, @Nullable AttributeSet attrs) {this(context, attrs, 0);}public DrawView(Context context, @Nullable AttributeSet attrs, 
http://www.lryc.cn/news/2414288.html

相关文章:

  • 520了,教你如何制作自己的表白网站(附模板源码)
  • 【转】威胁建模的12种方法
  • 计算机网络基础技术:数据通信技术基本概念
  • 使用BULK INSERT高效导入大量数据到SQL Server数据库
  • 问题事件名称: APPCRASH(解决方法)
  • 分享86个jQuery特效,总有一款适合您
  • DFS概念介绍
  • 网络知识:电脑无线网连接不上问题汇总
  • 手把手教你提取WOW中的所有声音文件
  • Windows系统缺失wsock32.dll文件导致出现错误解决
  • NLP重要概念
  • 宽带的上行带宽和下行带宽是什么?
  • platform设备添加流程(转载)
  • libnet/libnids库函数介绍
  • STL算法 | std::max的使用方法总结,std::min 的使用方法与之相同。
  • 电脑缺失msvcr120.dll丢失的5种修复,轻松解决msvcr120.dll问题
  • win7怎么看电脑配置和型号参数
  • IIS错误:-2147467259 (0x80004005) 解决方法
  • AttributeSet api分析
  • 各国google网站
  • 【Linux篇】Linux操作系统各部分详解
  • 《炬丰科技-半导体工艺》准原子层蚀刻的硅氮化物
  • css 绝对定位元素居中
  • 麒麟v10 Ubuntu miniconda3 gdal 发布flask web项目
  • CSDN免积分下载
  • CherryUSB 中的 XHCI 驱动分析
  • 继电保护常用元件——电流和电压互感器
  • USBPRINT打印机发指令工具命令行版本 xpt
  • 《通信工程制图与概预算》
  • stagefright 架构分析(一) stagefright 介绍