自定義View

我在項目中臉球這個項目中的話我是用自定義View完成了一個下拉選擇切換城市的一個控件.實現(xiàn)自定義View的話我們要進行計算然后布局擺放然后再繪制出來

首先我們進行計算我們先走onMeasure()這個方法調(diào)用了setMeasureDimension()通過測量父窗體的模式和對我們的寬高進行重新繪制,給我們View重新替換最新的寬高,然后調(diào)用

setMeasureDimensionRaw()這個方法將我們最新的寬高賦值給我們當前類的寬高.然后我們再去進行布局擺放,首先還是要通過onMeasure進行測量 然后將獲取到的距離代替以前的距離,

然后通過setFrame()方法進行判斷如果原來的值與現(xiàn)在的值有一個不同就會發(fā)生改變,然后再測量出最新的寬高與之前的寬高作比較,如果有一個不一樣就說明它的尺寸發(fā)生了改變他就會走

invalidate(sizeChanged)這個方法,這個方法的作用就是用來重新繪制的,然后再通過setLeftTopRightBottom()設(shè)置頂點,再通過sizeChanged()這個方法來調(diào)整尺寸.接著我們就去

繪制,我們主要使用onDraw()和dispatchDraw()這兩個方法,發(fā)現(xiàn)這兩個方法是空方法需要我們覆寫,我們點進ViewGroup的dispatchDraw()這個方法,發(fā)現(xiàn)里面有一個childer這個數(shù)組

我們通過getAndVerifyPreorderedView這個方法獲取一個child,然后會調(diào)用drawChild()這個方法,這個方法里面會通過child.draw()去繪制子View onDraw()也是一樣的.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容