Android View的繪制流程可以簡單概括為以下幾個(gè)步驟:
測量(Measure):在View的measure()方法中,系統(tǒng)會根據(jù)View的布局參數(shù)以及父容器的要求來計(jì)算出View的測量寬高。
布局(Layout):在View的layout()方法中,系統(tǒng)會根據(jù)View的布局參數(shù)以及父容器的要求來確定View在父容器中的位置。
繪制(Draw):在View的draw()方法中,系統(tǒng)會通過硬件加速或者軟件繪制來將View的內(nèi)容繪制到屏幕上。
觸摸事件分發(fā):在View的dispatchTouchEvent()方法中,系統(tǒng)會將觸摸事件從父容器傳遞到目標(biāo)View,并依次調(diào)用View的onTouchEvent()方法來處理觸摸事件。
重繪(Invalidation):在View的invalidate()方法中,系統(tǒng)會將View標(biāo)記為“需要重繪”,在下一次繪制周期中重新調(diào)用View的draw()方法來進(jìn)行重繪。
需要注意的是,以上流程并不是一次性完成的,而是在需要的時(shí)候會被觸發(fā)。例如,當(dāng)View顯示在屏幕上時(shí)會觸發(fā)測量、布局和繪制流程;當(dāng)用戶觸摸View時(shí)會觸發(fā)觸摸事件分發(fā)流程;當(dāng)調(diào)用invalidate()方法時(shí)會觸發(fā)重繪流程。