Android視窗機制系列

Android視窗機制(一)初識Android的視窗結構
Android視窗機制(二)Window,PhoneWindow,DecorView,setContentView原始碼理解
Android視窗機制(三)Window和WindowManager的建立與Activity
Android視窗機制(四)ViewRootImpl與View和WindowManager
Android視窗機制(五)最終章:WindowManager.LayoutParams和Token以及其他視窗Dialog,Toast

視窗結構

Paste_Image.png

說明

  • 每一個Activity都包含一個Window物件,Window物件通常由PhoneWindow實現
  • PhoneWindow:將Decoriew設定為整個應用視窗的根View。是Window的實現類。它是Android中的最基本的視窗系統,每個Activity 均會建立一個PhoneWindow物件,是Activity和整個View系統互動的介面。
  • DecorView:頂層檢視,將要顯示的具體內容呈現在PhoneWindow上. DecorView是當前Activity所有View的祖先,它並不會向用戶呈現任何東西,它主要有如下幾個功能,可能不全:
    • A. Dispatch ViewRoot分發來的key、touch、trackball等外部事件;
    • B. DecorView有一個直接的子View,我們稱之為System Layout,這個View是從系統的Layout.xml中解析出的,它包含當前UI的風格,如是否帶title、是否帶process bar等。可以稱這些屬性為Window decorations。
    • C. 作為PhoneWindow與ViewRoot之間的橋樑,ViewRoot通過DecorView設定視窗屬性。//可以這樣獲取 View view = getWindow().getDecorView();
    • DecorView只有一個子元素為LinearLayout。代表整個Window介面,包含通知欄,標題欄,內容顯示欄三塊區域。DecorView裡面TitleView:標題,可以設定requestWindowFeature(Window.FEATURE_NO_TITLE)取消掉ContentView:是一個id為content的FrameLayout。我們平常在Activity使用的setContentView就是設定在這裡,也就是在FrameLayout上

下篇文章將跟大家講解他們的是如何聯絡的,以及他們的理解。
Android視窗機制(二)Window,PhoneWindow,DecorView,setContentView原始碼理解:http://www.jianshu.com/p/e42b638944ae



作者:Hohohong
連結:https://www.jianshu.com/p/40a9c93b5a8d
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授