本文内容主要参考《Android图形显示系统》
图形显示系统会涉及到图层、窗口、画布和视图等概念,下面分别对它们进行简单介绍。
1)图层:图层是SurfaceFlinger中的概念,使用Layer表示,SurfaceFlinger在合成最终显示的图形时以图层作为基本单位。最常见的是BufferLayer,也就是缓冲图层,它是图形缓冲的载体。缓冲图层维护着一个缓冲队列,图形生产者、图形消费者。
2)窗口,窗口是应用进程的概念,使用Surface或SufaceControl表示,窗口SufaceControl一般由WindowManagerService(WMS)创建。窗口一般对应于SurfaceFlinger中的一个图层,窗口主要用于控制图层的状态,或者向图层传递图形数据,WMS使用SurfaceControl控制图层的状态,比如前后顺序,位置,透明度等。应用进程使用Surface向图层传递缓冲数据,Surface其实主要封装了图形生产者对象,通过该对象可以申请图形缓冲和投递图形缓冲。
3)画布,也就是Canvas,画布主要主要对渲染库和图形缓冲进行封装,并向外提供接口,开发者通过这些接口即可把图形渲染到图形缓冲中。
4)视图,也就是View,是UI的组成部分,向TextView, ImageView和RelativeLayout等都属于视图,视图主要调用画布的接口绘制它的内容,视图可以响应输入事件。