第三章 Android控件架構(gòu)與自定義控件詳解

? ? ? ? ? 控件是每個(gè)Android App都必不可少的一部分,無論是使用系統(tǒng)控件,還是使用自定義控件遂鹊。這些控件,組成了每個(gè)精美的界面蔗包,本章向大家講解Android控件架構(gòu)秉扑,以及如何實(shí)現(xiàn)自定義控件。

? ? ? ? ?學(xué)習(xí)本章调限,你講了解到以下內(nèi)容:

? ?1 ?android控件架構(gòu)

? ?2 ?View的測(cè)量與繪制

? ?3 ?ViewGroup的測(cè)量與繪制

? 4 ? 自定義控件的三種方式

? 5 ? 事件的攔截機(jī)制

3.1 Android控件架構(gòu)

? ? ? ? ?Android中的美格空間都會(huì)在界面中占得一塊矩形的區(qū)域舟陆,而在Android中,控件大致被分為兩種旧噪,即ViewGroup控件與View控件吨娜。ViewGroup空間作為父控件可以包含多個(gè)View控件,并管理其包含的View控件淘钟。通過ViewGroup宦赠,整個(gè)界面上的控件形成了樹形結(jié)構(gòu),這也就是我們常說的控件樹,上層控件負(fù)責(zé)下層控件的測(cè)量與繪制勾扭,并傳遞交互事件毡琉。通常在Activity中使用findViewById()方法,就是在空間書中以樹的深度優(yōu)先遍歷來查找對(duì)應(yīng)元素妙色。在每顆控件樹的頂部桅滋,都有一個(gè)ViewParent對(duì)象,這就是整顆樹的核心控制身辨,所有的交互管理實(shí)踐都由她來統(tǒng)一調(diào)度和分配丐谋,從而可以對(duì)整個(gè)視圖進(jìn)行整體控制。

? ? ? ? 通常情況下煌珊,在Acitivity中使用setContentView()方法來設(shè)置一個(gè)布局号俐,在調(diào)用該方法后,布局才真正的顯示出來定庵。那么setContentView()方法具體做了些什么啦吏饿?首先,我們來看一下Android界面的架構(gòu)圖蔬浙,



? ? ? ? 如圖3.2所示猪落,每個(gè)Activity都包含一個(gè)window對(duì)象,在Android中window對(duì)象通常由PhoneWindow來實(shí)現(xiàn)畴博。phoneWindow將一個(gè)DecorView設(shè)置為整個(gè)應(yīng)用窗口的根View笨忌。

DecorView作為窗口界面的頂層視圖,封裝了一些窗口操作的通用方法绎晃∶弁伲可以說DecorView

將要顯示的具體內(nèi)容呈現(xiàn)在了PhoneWindow上杂曲,這里面的所有View的監(jiān)聽事件們都通過WindowMangerService來進(jìn)行接收庶艾,并通過Activity對(duì)象來回調(diào)相應(yīng)的onCkickListener。在顯示上擎勘,它將屏幕分為兩部分咱揍,一個(gè)是TitleView,另一個(gè)是ContentView棚饵∶喝梗看到這里,大家一定看到了一個(gè)非常熟悉的布局-------contentView噪漾。他是一個(gè)ID為content的Framelayout硼砰,,activity_main.xml就是設(shè)置在這樣一個(gè)framelayout里欣硼,通過以上過程题翰,我們就可以建立起這樣一個(gè)標(biāo)準(zhǔn)視圖如圖3.3所示

圖3.3所示的視圖的第二層裝載了一個(gè)LinearLayout,作為ViewGroup,這一層的布局結(jié)構(gòu)會(huì)根據(jù)對(duì)應(yīng)參數(shù)設(shè)置不同布局豹障,如最常用的布局------上面顯示TitleBar下面是Content這樣的布局冯事,也就是圖3.3中所設(shè)置的布局。而如果用戶通過設(shè)置


requsetWindowFeature(Window.FEATURE_NO_TITLE)來試著全屏顯示血公,視圖樹中的布局就只有Content了昵仅,這就解釋了為什么調(diào)用requsetWindowFeature()方法一定要在調(diào)用


之前才能生效的原因。不過這里要注意的是累魔,由于每個(gè)Android班的UI的修改都比較多摔笤,圖3.3只是比較粗略的現(xiàn)實(shí)了視圖樹的結(jié)構(gòu)。


? ? ? ? ? ?而在代碼中垦写,當(dāng)程序在onCreat()方法中調(diào)用了setcontentView()方法后籍茧,ActivityMangerServic會(huì)調(diào)用onResume()方法,此時(shí)系統(tǒng)才會(huì)把整個(gè)DecorView添加到PhoneWindow中梯澜,并讓其顯示出來寞冯,從而最總完成界面的繪制。


http://zhanhao.iteye.com/blog/1174914

http://www.cnblogs.com/zhongbingshu/p/5775824.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末晚伙,一起剝皮案震驚了整個(gè)濱河市吮龄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌咆疗,老刑警劉巖漓帚,帶你破解...
    沈念sama閱讀 222,590評(píng)論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異午磁,居然都是意外死亡尝抖,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,157評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門迅皇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來昧辽,“玉大人,你說我怎么就攤上這事登颓〗淋瘢” “怎么了?”我有些...
    開封第一講書人閱讀 169,301評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵框咙,是天一觀的道長(zhǎng)咕痛。 經(jīng)常有香客問我,道長(zhǎng)喇嘱,這世上最難降的妖魔是什么茉贡? 我笑而不...
    開封第一講書人閱讀 60,078評(píng)論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮者铜,結(jié)果婚禮上腔丧,老公的妹妹穿的比我還像新娘构蹬。我一直安慰自己,他們只是感情好悔据,可當(dāng)我...
    茶點(diǎn)故事閱讀 69,082評(píng)論 6 398
  • 文/花漫 我一把揭開白布庄敛。 她就那樣靜靜地躺著,像睡著了一般科汗。 火紅的嫁衣襯著肌膚如雪藻烤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,682評(píng)論 1 312
  • 那天头滔,我揣著相機(jī)與錄音怖亭,去河邊找鬼。 笑死坤检,一個(gè)胖子當(dāng)著我的面吹牛兴猩,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播早歇,決...
    沈念sama閱讀 41,155評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼倾芝,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了箭跳?” 一聲冷哼從身側(cè)響起晨另,我...
    開封第一講書人閱讀 40,098評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎谱姓,沒想到半個(gè)月后借尿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,638評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡屉来,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,701評(píng)論 3 342
  • 正文 我和宋清朗相戀三年路翻,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茄靠。...
    茶點(diǎn)故事閱讀 40,852評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡茂契,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嘹黔,到底是詐尸還是另有隱情账嚎,我是刑警寧澤莫瞬,帶...
    沈念sama閱讀 36,520評(píng)論 5 351
  • 正文 年R本政府宣布儡蔓,位于F島的核電站,受9級(jí)特大地震影響疼邀,放射性物質(zhì)發(fā)生泄漏喂江。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,181評(píng)論 3 335
  • 文/蒙蒙 一旁振、第九天 我趴在偏房一處隱蔽的房頂上張望获询。 院中可真熱鬧涨岁,春花似錦、人聲如沸吉嚣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,674評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽尝哆。三九已至秉撇,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秋泄,已是汗流浹背琐馆。 一陣腳步聲響...
    開封第一講書人閱讀 33,788評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留恒序,地道東北人瘦麸。 一個(gè)月前我還...
    沈念sama閱讀 49,279評(píng)論 3 379
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像歧胁,于是被迫代替她去往敵國(guó)和親滋饲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,851評(píng)論 2 361

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