Android窗口機制系列
Android窗口機制(一)初識Android的窗口結(jié)構(gòu)
Android窗口機制(二)Window,PhoneWindow,DecorView,setContentView源碼理解
Android窗口機制(三)Window和WindowManager的創(chuàng)建與Activity
Android窗口機制(四)ViewRootImpl與View和WindowManager
Android窗口機制(五)最終章:WindowManager.LayoutParams和Token以及其他窗口Dialog,Toast
窗口結(jié)構(gòu)
Paste_Image.png
說明
- 每一個Activity都包含一個Window對象,Window對象通常由PhoneWindow實現(xiàn)
- PhoneWindow:將Decoriew設(shè)置為整個應(yīng)用窗口的根View。是Window的實現(xiàn)類。它是Android中的最基本的窗口系統(tǒng),每個Activity 均會創(chuàng)建一個PhoneWindow對象,是Activity和整個View系統(tǒng)交互的接口。
- DecorView:頂層視圖,將要顯示的具體內(nèi)容呈現(xiàn)在PhoneWindow上. DecorView是當(dāng)前Activity所有View的祖先,它并不會向用戶呈現(xiàn)任何東西,它主要有如下幾個功能,可能不全:
- A. Dispatch ViewRoot分發(fā)來的key、touch、trackball等外部事件;
- B. DecorView有一個直接的子View,我們稱之為System Layout,這個View是從系統(tǒng)的Layout.xml中解析出的,它包含當(dāng)前UI的風(fēng)格,如是否帶title、是否帶process bar等??梢苑Q這些屬性為Window decorations。
- C. 作為PhoneWindow與ViewRoot之間的橋梁,ViewRoot通過DecorView設(shè)置窗口屬性。//可以這樣獲取 View view = getWindow().getDecorView();
- DecorView只有一個子元素為LinearLayout。代表整個Window界面,包含通知欄,標(biāo)題欄,內(nèi)容顯示欄三塊區(qū)域。DecorView里面TitleView:標(biāo)題,可以設(shè)置requestWindowFeature(Window.FEATURE_NO_TITLE)取消掉ContentView:是一個id為content的FrameLayout。我們平常在Activity使用的setContentView就是設(shè)置在這里,也就是在FrameLayout上
下篇文章將跟大家講解他們的是如何聯(lián)系的,以及他們的理解。
Android窗口機制(二)Window,PhoneWindow,DecorView,setContentView源碼理解:http://www.lxweimin.com/p/e42b638944ae