参考:Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
Surface、SurfaceView、SurfaceHolder及SurfaceHolder.Callback之间的关系
书写本文的初衷是为了自我学习
Surface
Surface就是“表面”的意思。在SDK的文档中,对Surface的描写叙述是这种:“Handle onto a raw buffer that is being managed by the screen compositor”,翻译成中文就是“由屏幕显示内容合成器(screen compositor)所管理的原生缓冲器的句柄”,这句话包含以下两个意思:
-
通过Surface(由于Surface是句柄)就能够获得原生缓冲器以及当中的内容。就像在C语言中,能够通过一个文件的句柄,就能够获得文件的内容一样;
-
原生缓冲器(rawbuffer)是用于保存当前窗体的像素数据的
https://www.cnblogs.com/lcchuguo/p/3992482.html
SurfaceView
通俗的理解,相当于通过SurfaceView我们就能够看到Surface的部分或所有内容
所以说,SurfaceView中的View有两个含义:
-
视口(viewport)的意思
-
SurfaceView是View的派生类
SurfaceHolder
SurfaceHolder是一个接口,其作用就像一个关于Surface的监听器。提供访问和控制SurfaceView背后的Surface 相关的方法,它通过三个回调方法,让我们能够感知到Surface的创建、销毁或者改变。
SurfaceHolder.Callback
前面已经讲到SurfaceHolder是一个接口,它通过回到方法的方式,让我们能够感知到Surface的创建、销毁或者改变。事实上这一点是通过其内部的静态子接口SurfaceHolder.Callback来实现的。SurfaceHolder.Callback中定义了三个接口方法:
1. abstract void surfaceChanged(SurfaceHolderholder, int format, int width, int height)
当surface发生不论什么结构性的变化时(格式或者大小),该方法就会被马上调用。
2. abstract void surfaceCreated(SurfaceHolderholder)
当surface对象创建后,该方法就会被马上调用。
3. abstract void surfaceDestroyed(SurfaceHolderholder)
当surface对象在将要销毁前,该方法会被马上调用。