Canvas 从哪里来到哪里去?

Canvas 从哪里来到哪里去?

看图

下图中可以看出,Canvas来自Surface.mCanvas,通过函数Surface.lockCanvas取得,传入函数View.draw
在这里插入图片描述
下面来看函数View.draw的参数传给了:
不仅传给了函数View.onDraw,用于画自己,还传给了函数ViewGroup.dispatchDraw,用于画子视图。
在函数View.draw::Canvas,ViewGroup,long: 调用View.draw::Canvas: 之前,会调用函数Canvas.translateCanvas.scaleCanvas.clipRect等对Canvas进行调整。

在这里插入图片描述

所以我们暂时得出一个结论(不一定正确,只是猜测):所有的视图所使用的Canvas都是同一个实例,且来自Surface.mCanvas。