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。