Android View 繪制的流程大致包括以下幾個(gè)步驟:
請(qǐng)求繪制:當(dāng) View 需要被繪制時(shí),會(huì)調(diào)用 invalidate()
方法觸發(fā)重繪操作。在 invalidate()
方法中,會(huì)調(diào)用 ViewRootImpl
的 scheduleTraversals()
方法,該方法最終會(huì)調(diào)用 scheduleTraversals()
方法來開始進(jìn)行繪制操作。
測(cè)量大?。涸谶M(jìn)行繪制操作之前,需要對(duì) View 進(jìn)行測(cè)量,確定其大小和位置。首先會(huì)調(diào)用 measure()
方法來測(cè)量 View 的大小,這個(gè)過程包括測(cè)量 View 自身的大小以及其子 View 的大小。
布局位置:測(cè)量完成后,會(huì)調(diào)用 layout()
方法來確定 View 的布局位置,將 View 放置在父容器中的指定位置。
繪制內(nèi)容:最后調(diào)用 draw()
方法來進(jìn)行實(shí)際的繪制操作,在 draw()
方法中,會(huì)調(diào)用 View 的 onDraw()
方法來繪制 View 的內(nèi)容,同時(shí)也會(huì)繪制其子 View 的內(nèi)容。
繪制完成:當(dāng)繪制操作完成后,會(huì)調(diào)用 ViewRootImpl
的 finishTraversal()
方法來完成整個(gè)繪制流程,并將繪制結(jié)果顯示在屏幕上。
總的來說,Android View 繪制的流程包括測(cè)量大小、布局位置、繪制內(nèi)容等幾個(gè)步驟,最終完成整個(gè)繪制操作并將結(jié)果顯示在屏幕上。