目錄
- 簡介
- 目錄
- 1、VeiwRoot
- 1.1、簡介
- 1.2、特別注意
- 2、DecorView
- 2.1、定義
- 2.2、作用
- 2.3、特別說明
- 3、Window
- 4、Activity
- 5、之間關系
- 5.1、總結
- 5.2、之間的關系
簡介
- DecorView為整個Window界面的最頂層View。
- DecorView只有一個子元素為LinearLayout。代表整個Window界面,包含通知欄,標題欄,內容顯示欄三塊區域。
- LinearLayout里有兩個FrameLayout子元素。
- (20)為標題欄顯示界面。只有一個TextView顯示應用
- (21)為內容欄顯示界面。就是setContentView()方法載入的布局界面,加入其中。
目錄
1、VeiwRoot
1.1、簡介
1.2、特別注意
// 在主線程中,Activity對象被創建后:
// 1. 自動將DecorView添加到Window中 & 創建ViewRootImpll對象
root = new ViewRootImpl(view.getContent(),display);// 3. 將ViewRootImpll對象與DecorView建立關聯
root.setView(view,wparams,panelParentView)
2、DecorView
2.1、定義
頂層View,即 Android 視圖樹的根節點;同時也是 FrameLayout 的子類。
2.2、作用
顯示 & 加載布局。View層的事件都先經過DecorView,再傳遞到View。
2.3、特別說明
內含1個豎直方向的LinearLayout,分為2部分:
- 上 = 標題欄(titlebar)
- 下 = 內容欄(content)
在
Activity
中通過setContentView()
所設置的布局文件其實是被加到內容欄之中的,成為其唯一子View = id
為content
的FrameLayout
中。
注:獲取setContentView()設置的View代碼如下:
// 在代碼中可通過content得到對應加載的布局// 1. 得到content
ViewGroup content = (ViewGroup)findViewById(android.R.id.content);
// 2. 得到設置的View
ViewGroup rootView = (ViewGroup) content.getChildAt(0);
3、Window
4、Activity
5、之間關系
ViewRoot、DecorView、Window和Activity的關系非常重要。