Adroid 界面绘制实现
View 类 包 含 Surface ( 变 量 名 mSurface )。 Surface 中 包 含 CompatibleCanvas ( 变 量 名
mCanvas)。CompatibleCanvas 继承至 Canval(java.awt.Canval),其中包含一个矩阵对象 Matrix
(变量名 mOrigMatrix)。矩阵 Matrix 就是一块内存区域,针对 View 的各种绘画操作都保存
在此内存中。
每个 Surface 通常对应两个 buffer,一个 front buffer, 一个 back buffer。其中,back buffer 就
是 canvas 绘图时对应的 bitmap (研究 android_view_Surface.cpp::lockCanvas)。因此,绘画总
是在 back buffer 上,需要更新时,则将 back buffer 和 front buffer 互换。
每 个 surface 又 对 应 一 个 layer, SurfaceFlinger 负 责 将 各 个 layer 的 front buffer 合 成
(composite)绘制到屏幕上。
用户接口方面,主要表现任务由 View 的各种继承类来实现。View 类的继承关系如图所示。