View的三大流程是什麼,加以簡單說明

measure,layuout,draw。這三大流程由ViewRoot通過調用performTranversals發起。

measure:系統根據父View的MeaureSpec和View的layoutparams計算出View的MeasureSpec,通過meaure方法參數傳遞給View使用。measure方法調用onMesure通過傳參將MeasureSpec傳遞給onMeasure方法。View包括ViewGroup可以通過重寫onMeasure實現自定義的測量。當測量完畢,通過setMeasuredDimension,將自定義測量的寬高設置給View。

layout: 系統計算出子View在父View中的left,top,right,bottom,通過layout方法將定點的值傳入。在layout中通過setFrame設置View在父View中的位置。如果View是ViewGroup的話,還會調用onLayout,在onLayout中通過對setchildframe的調用實現對子View的layout的發起。

draw: 這個流程做了很多事情,簡單來講就是 1.繪製背景 2.保留塗層 3.繪製當前View的內容 4.喚起子View的draw過程 5.繪製陰影,恢復圖層 6.繪製邊飾。這裏涉及到一個優化的點:WillNotDraw字段。

 

這些只是空洞的概念,如果你想要有深刻點的認識所謂三大流程到底有什麼作用,點擊這裏https://blog.csdn.net/a15998126054/article/details/105472697。這篇文章通過回答onmeasure,onlayout,ondraw如何使用,讓你有更細節化的認知。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章