android view繪製過程

2021-07-09 11:07:10 字數 1130 閱讀 7217

簡單描述可以解釋為:計算大小(

measure

),布局座標計算(

layout

),繪製到螢幕(

draw);

下面看看每一步的動作到底是什麼,

第一步:當activity啟動的時候,觸發初始化view過程的是由window物件的decorview呼叫view(具體怎樣從xml中讀取是用layoutinflater.from(context).inflate)物件的 public final void measure(int widthmeasurespec, int heightmeasurespec)方法開始的,這個方法是final型別的,也就是所有的子類都不能繼承該方法,保證android初始化view的原理不變。具體引數類值,後面會介紹。

第二步:view的measure方法 onmeasure(widthmeasurespec, heightmeasurespec),該方法進行實質性的view大小計算。注意:view的大小是有父view和自己的大小決定的,而不是單一決定的。這也就是為什麼viewgroup的子類會重新該方法,比如linearlayout等。因為他們要計算自己和子view的大小。view基類有自己的實現,只是設定大小。其實根據原始碼來看,measure的過程本質上就是把match_parent和wrap_content轉換為實際大小

第三步:當measure結束時,回到decorview,計算大小計算好了,那麼就開始布局了,開始呼叫view的 public final void layout(int l, int t, int r, int b),該還是也是final型別的,目的和measure方法一樣。layout方法內部會呼叫onlayout(int l, int t, int r, int b )方法,二viewgroup將此方法abstract的了,所以我們繼承viewgroup的時候,需要重新該方法。該方法的本質是通過measure計算好的大小,計算出view在螢幕上的座標點

第四步:measure過了,layout過了,那麼就要開始繪製到螢幕上了,所以開始呼叫view的public void draw(canvas canvas)方法,此時方法不是final了,原因是程式設計師可以自己畫,內部會呼叫ondraw,我們經常需要重寫的方法。簡單描述可以解釋為:計算大小(measure),布局座標計算(layout),繪製到螢幕(draw);

android View繪製流程

android的view的繪製流程大概就如同我們作畫一樣,分為以下幾步 1.測量出每個view的大小。2.根據上一步測量得到的大小,確定view繪製的座標位置。3.有了具體的位置及view大小,開始繪製view。我們的activity在建立的時候就會對應的建立乙個window,用於展示我們需要展示的...

Android View 如何繪製

上文說道了android如何測量,但是乙個漂亮的控制項我只知道您長到哪兒,這當然不行。只需要簡單重寫ondraw方法,並在canvas 畫布 物件上呼叫那根五顏六色的畫筆就能夠畫出這控制項 的外表。那麼view又是如何進行繪製了?要了解view如何繪製,就需要了解canvas 畫布 是什麼?pain...

Android View 如何繪製

上文說道了android如何測量,但是乙個漂亮的控制項我只知道您長到哪兒,這當然不行。只需要簡單重寫ondraw方法,並在canvas 畫布 物件上呼叫那根五顏六色的畫筆就能夠畫出這控制項 的外表。那麼view又是如何進行繪製了?要了解view如何繪製,就需要了解canvas 畫布 是什麼?pain...