知識點:
view的measure過程和activity的生命週期不同步
一、view的measure過程
measure是final,不可重寫;
measure---onmeasure---setmeasureddimension--- getdefaultsize這裡atmost和exactly進行了相同的操作
@override
protected void onmeasure(int widthmeasurespec, int heightmeasurespec) else if (widthspecmode == measurespec.at_most) else if (heightspecmode == measurespec.at_most)
}
二、viewgroup的measure過程
除了完成自己的measure過程外,還會遍歷所有了元素的measure,提供乙個measurechildren方法來進行。
三、在activity啟動時,需要獲取view的寬高。
2、view.post(通過runnable)
measure錯誤用法
View框架之measure 流程
注意 1.以下measurespec用ms來代替 ms具體會在後面介紹 2.該時序圖描述的是從viewrootimpl開始的measure 過程,因為viewrootimpl是window與view連線的樞紐 3.該時序圖著重於大概流程及重要方法的作用,具體 細節會放到後面介紹 4.decorvie...
普通View的measure流程
對於普通的view,其測量在viewgroup中的measurechildwithmargins函式中呼叫child view的measure開始測量。1 從measure函式開始 1 public final void measure int widthmeasurespec,int height...
View 的工作原理
view 通過 measure 來測量 view 的寬高,layout 來確定 view 在父容器中的放置位置,draw 則負責將 view 繪製在螢幕上。measure 完成後,可以通過 getmeasuredwidth 和 getmeasuredheight 獲取 view 的寬高,在幾乎所有情...