View绘制框架

View绘图框架:

上述图就是View的绘制框架图:

通过MyView把系统显示界面的缓冲区画布canvas通过onDraw函数获取到,进行界面的绘制编写,界面信息填充完毕后,应用层代码执行invalidate()函数,Android框架即可回调给View,在View类中invalidate会被invalidateChildParent函数执行,之后该函数会回调给ViewRoot,在ViewRoot中invalidateChildInParent会执行invalidateChild函数,执行该函数后,WMS就会通知负责绘图的surfaceFlinger,surfaceFlinger就会把应用层的绘图信息交给绘图区显示在界面上,而原来的缓冲区就变成绘图区,绘图区就变成缓冲区(即Canvas),缓冲区会被WMS转交给ViewRoot,之后交给View的draw,最终将canvas交给应用层的MyView的onDraw()。