自定義View的總結(jié)

一炸渡、自定義Viewhttps://blog.csdn.net/u014005316/article/details/54616393

1.自定義View的繪制流程

1.走構(gòu)造函數(shù)(對View進行初始化)

2.onMeasure(測量View的大小)

3.onSizeChange(確定View的大小)

4.onLayout(確定子View的大心纫凇(包含子View的時候使用))

5.onDraw(實際繪制內(nèi)容)

6.如果視圖狀態(tài)改變(用戶操作或自身變化引起)進行重繪 調(diào)用invalidate方法

二.自定義View的分類:

自定義ViewGroup

自定義ViewGroup一般是利用現(xiàn)有的組件根據(jù)特定的布局方式來組成新的組件,大多繼承自ViewGroup或各種Layout蚌堵。

自定義View

在沒有現(xiàn)成的View买决,需要自己實現(xiàn)的時候,就使用自定義View吼畏,一般繼承自View督赤,SurfaceView或其他的View。

三.細講View流程方法

1.構(gòu)造函數(shù)

構(gòu)造函數(shù)是View的入口泻蚊,可以用于初始化一些的內(nèi)容躲舌,和獲取自定義屬性,View的構(gòu)造函數(shù)有四種重載

1.有三個參數(shù)的構(gòu)造函數(shù)中第三個參數(shù)是默認的Style性雄,這里的默認的Style是指它在當前Application或Activity所用的Theme中的默認Style没卸,且只有在明確調(diào)用的時候才會生效

2.有兩個個參數(shù)的構(gòu)造函數(shù)一般在layout文件中使用的時候會調(diào)用羹奉,關(guān)于它的所有屬性(包括自定義屬性)都會包含在attrs中傳遞進來。

3.有一個參數(shù)的構(gòu)造函數(shù)中一般在直接New一個View的時候調(diào)用约计。

2.測量View的大芯魇谩(onMeasure)

1.View的大小不僅由自身所決定,同時也會受到父控件的影響煤蚌,為了我們的控件能更好的適應(yīng)各種情況耕挨,一般會自己進行測量。

2.onMeasure 函數(shù)中有 widthMeasureSpec 和 heightMeasureSpec 這兩個 int 類型的參數(shù)尉桩, 毫無疑問他們是和寬高相關(guān)的俗孝, 但它們其實不是寬和高, 而是由寬魄健、高和各自方向上對應(yīng)的測量模式來合成的一個值

3.測量模式一共有三種赋铝, 被定義在 Android 中的 View 類的一個內(nèi)部類View.MeasureSpec中

1.UNSPECIFIED:默認值,父控件沒有給子view任何限制沽瘦,子View可以設(shè)置為任意大小革骨,一般不會用到,使用場景是系統(tǒng)內(nèi)部

2.EXACTLY:表示父控件已經(jīng)確切的指定了子View的大小析恋,一般設(shè)置為Match_Parent或50dp精確的值良哲。

3.AT_MOST:表示子View具體大小沒有尺寸限制,但是存在上限助隧,上限一般為父View大小筑凫,一般設(shè)置為warp_content。

4.注意: 用 MeasureSpec 的 getSize是獲取數(shù)值并村, getMode是獲取模式巍实。如果對View的寬高進行修改了,不要調(diào)用 super.onMeasure( widthMeasureSpec, heightMeasureSpec); 要調(diào)用 setMeasuredDimension( widthsize, heightsize); 這個函數(shù)哩牍。

3.onSizeChange:

1.在測量完View并使用setMeasuredDimension函數(shù)之后View的大小基本上已經(jīng)確定了棚潦,那么為什么還要再次確定View的大小呢?

這是因為View的大小不僅由View本身控制膝昆,而且受父控件的影響,所以我們在確定View大小的時候最好使用系統(tǒng)提供的onSizeChanged回調(diào)函數(shù)荚孵。

2.它又四個參數(shù)妹窖,分別為 寬度收叶,高度,上一次寬度,上一次高度谒麦。

這個函數(shù)比較簡單俄讹,我們只需關(guān)注 寬度(w), 高度(h) 即可哆致,這兩個參數(shù)就是View最終的大小绕德。

4.onLayout:

1.確定布局的函數(shù)是onLayout摊阀,它用于確定子View的位置耻蛇,在自定義ViewGroup中會用到胞此,他調(diào)用的是子View的layout函數(shù)臣咖。

2.在自定義ViewGroup中,onLayout一般是循環(huán)取出子View漱牵,然后經(jīng)過計算得出各個子View位置的坐標值夺蛇,然后用以下函數(shù)設(shè)置子View位置。child.layout(l, t, r, b); l是 View左側(cè)距父View左側(cè)的距離酣胀。

5.onDraw:

1.invalidate在子線程進行重繪

2.postinvalidate在主線程進行重繪?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市甚脉,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌牺氨,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件猴凹,死亡現(xiàn)場離奇詭異岭皂,居然都是意外死亡精堕,警方通過查閱死者的電腦和手機蒲障,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來揉阎,“玉大人,你說我怎么就攤上這事毙籽。” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵么抗,是天一觀的道長。 經(jīng)常有香客問我亚铁,道長,這世上最難降的妖魔是什么徘溢? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮站粟,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘奴烙。我一直安慰自己,他們只是感情好切诀,可當我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布修械。 她就那樣靜靜地躺著趾牧,像睡著了一般肯污。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蹦渣,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天,我揣著相機與錄音柬唯,去河邊找鬼。 笑死锄奢,一個胖子當著我的面吹牛失晴,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拘央,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼涂屁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了灰伟?” 一聲冷哼從身側(cè)響起拆又,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎帖族,沒想到半個月后栈源,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體竖般,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年制轰,在試婚紗的時候發(fā)現(xiàn)自己被綠了胞谭。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡丈屹,死狀恐怖伶棒,靈堂內(nèi)的尸體忽然破棺而出旺垒,到底是詐尸還是另有隱情肤无,我是刑警寧澤先蒋,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布宛渐,位于F島的核電站,受9級特大地震影響窥翩,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寇蚊,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一仗岸、第九天 我趴在偏房一處隱蔽的房頂上張望允耿。 院中可真熱鬧扒怖,春花似錦较锡、人聲如沸姚垃。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽谦纱。三九已至,卻和暖如春跨嘉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背祠乃。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工兑燥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留亮瓷,地道東北人降瞳。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像挣饥,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子扔枫,可洞房花燭夜當晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容