Android
讀書(shū)筆記
聲明:本筆記是本人學(xué)習(xí)過(guò)程中的記錄,摘取自徐宜生的《Android群英傳》,有興趣的可以購(gòu)買(mǎi)此書(shū)籍學(xué)習(xí)。
第三章 Android控件架構(gòu)與自定義詳解
- Android中的每一個(gè)控件都會(huì)在界面占據(jù)一塊
矩形
的區(qū)域,在Android中控件大概分為兩類(lèi)ViewGroup控件
和View控件
。ViewGroup作為父控件可以包含多個(gè)
View控件,并管理其包含的控件。通過(guò)ViewGroup
控件,整個(gè)界面形成了一個(gè)控件樹(shù)
,上層控件負(fù)責(zé)下層控件的測(cè)量
和繪制
,并傳遞交互事件
。在每棵控件樹(shù)的頂部,都有一個(gè)ViewParent 對(duì)象
,即控件樹(shù)的核心,所有的交互管理事件都由他來(lái)統(tǒng)一調(diào)度和分配
。 - Android界面架構(gòu)圖:
View樹(shù)結(jié)構(gòu)圖
UI界面架構(gòu)圖
- 我們看UI界面架構(gòu)圖可以知道,每個(gè)Activity都包含一個(gè)
Window對(duì)象
(在Android中通常由PhoneWindow
來(lái)實(shí)現(xiàn))。 - PhoneWindow將一個(gè)
DecorView
設(shè)置為整個(gè)應(yīng)用窗口的根View
。 -
DecorView
作為窗口的頂層視圖,封裝了一些窗口操作的通用方法。DecorView
將要顯示具體內(nèi)容
都呈現(xiàn)在PhoneWindow
上,這里所有的View的監(jiān)聽(tīng)事件
都通過(guò)WindowManagerService
來(lái)進(jìn)行接收,并通過(guò)Activity對(duì)象
來(lái)回調(diào)
相應(yīng)的OnClickListener
。在顯示上,它將屏幕分為兩部分,一個(gè)是TitleView
,一個(gè)是ContentView
【它是一個(gè)ID為content的Framelayout,activity_main.xml就是設(shè)置在Framelayout里的】。 - 標(biāo)準(zhǔn)視圖樹(shù)
標(biāo)準(zhǔn)視圖樹(shù)
- 在代碼中,當(dāng)程序在
onCreate()
方法中調(diào)用setContentView()
方法后,ActivityManagerService
會(huì)回調(diào)OnResume()
方法,此時(shí)系統(tǒng)會(huì)把整個(gè)DecorView
添加到PhoneWindow
中,并讓其顯示出來(lái)