Android窗口機制系列
Android窗口機制(一)初識Android的窗口結構
Android窗口機制(二)Window匪凡,PhoneWindow膊畴,DecorView,setContentView源碼理解
Android窗口機制(三)Window和WindowManager的創(chuàng)建與Activity
Android窗口機制(四)ViewRootImpl與View和WindowManager
Android窗口機制(五)最終章:WindowManager.LayoutParams和Token以及其他窗口Dialog病游,Toast
窗口結構
說明
- 每一個Activity都包含一個Window對象,Window對象通常由PhoneWindow實現
- PhoneWindow:將Decoriew設置為整個應用窗口的根View衬衬。是Window的實現類买猖。它是Android中的最基本的窗口系統(tǒng),每個Activity 均會創(chuàng)建一個PhoneWindow對象滋尉,是Activity和整個View系統(tǒng)交互的接口玉控。
- DecorView:頂層視圖,將要顯示的具體內容呈現在PhoneWindow上. DecorView是當前Activity所有View的祖先兼砖,它并不會向用戶呈現任何東西奸远,它主要有如下幾個功能,可能不全:
- A. Dispatch ViewRoot分發(fā)來的key讽挟、touch懒叛、trackball等外部事件;
- B. DecorView有一個直接的子View耽梅,我們稱之為System Layout,這個View是從系統(tǒng)的Layout.xml中解析出的薛窥,它包含當前UI的風格,如是否帶title眼姐、是否帶process bar等诅迷。可以稱這些屬性為Window decorations众旗。
- C. 作為PhoneWindow與ViewRoot之間的橋梁罢杉,ViewRoot通過DecorView設置窗口屬性。//可以這樣獲取 View view = getWindow().getDecorView();
- DecorView只有一個子元素為LinearLayout贡歧。代表整個Window界面滩租,包含通知欄赋秀,標題欄,內容顯示欄三塊區(qū)域律想。DecorView里面TitleView:標題猎莲,可以設置requestWindowFeature(Window.FEATURE_NO_TITLE)取消掉ContentView:是一個id為content的FrameLayout。我們平常在Activity使用的setContentView就是設置在這里技即,也就是在FrameLayout上
下篇文章將跟大家講解他們的是如何聯系的著洼,以及他們的理解。
Android窗口機制(二)Window而叼,PhoneWindow身笤,DecorView,setContentView源碼理解:http://www.reibang.com/p/e42b638944ae