01 - [開胃菜] - Activity.setContentView 涉及到的類及相關(guān)概念
02 - [正菜] - Activity.setContentView流程
03 - [甜湯] - AppCompatActivity.setContentView 流程
04 - [完結(jié)] - setContentView 流程總結(jié)
大家新年好, 病毒肆虐期間, 在家學(xué)習(xí)學(xué)習(xí), 馬上就要復(fù)工了, 提前調(diào)整調(diào)整狀態(tài).
setContentView 是我們經(jīng)常用到的, 可是后面都做了什么, 大家了解嗎?
千里之行始于足下, 現(xiàn)在我們先來了解 Activity 的 setContentView 后續(xù)流程中的涉及到的類和相關(guān)的幾個概念.
1. 1 Window.java
官方注釋翻譯:
是一個頂層窗口外觀和行為策略的抽象基類, 這個類的實例應(yīng)作為頂層視圖添加到窗口管理器. 它提供了標(biāo)準(zhǔn)的UI策略, 比如背景, 標(biāo)題其余, 默認(rèn)密鑰處理等.
此抽象類的唯一實現(xiàn)類是
android.view.PhoneWindow
.
1.2 DecorView.java
DecorView
繼承 FrameLayout
官方注釋翻譯如下:
這是窗口的頂層視圖, 包含窗口裝飾.
理解:
DecorView
就是一個FrameLayout
, 是最頂層的View
. 它包含了Window
的裝飾(背景, 標(biāo)題, UI策略等), 會體現(xiàn)在這個View上.
看到這里可以知道了兩個概念.
頂層窗口 Window (PhoneWindow)
頂層視圖 View (DecorView)
它們兩個關(guān)系如下: 頂級窗口包含的狀態(tài)屬性, 會在頂級視圖體體現(xiàn)出來, 比如窗口大小, 背景, 標(biāo)題, 等.
1.3 PhoneWindow.mContentParent 變量
mContentParent
是 PhoneWindow 中的一個 ViewGroup 類型的變量, 官網(wǎng)注釋翻譯如下
這是一個放置窗口內(nèi)容的視圖, 它不是 mDecor 本身, 就是一個mDecor 的子View
( mDecor 是 PhoneWindow 中的一個 DecorView 類型的變量. )