android的視窗機制分析——UI管理系統

來源:互聯網
上載者:User

    Activity可以看做是整個android系統的人機介面,它提供了一個視窗來繪製UI,每個Activity在啟動時,我們都需要給它設定一個Content view,作為Activity所呈現的UI內容,這個過程是通過setContentView()方法來實現的。

    眾所周知,android系統中強化了view的概念,主要是體現在對view的管理上,Android中的view以2種形態存在,單一的View和多個View組成的ViewGroup。Content view是以ViewGroup的形式存在的,也就是說在一個Activity視窗中可以添加多個View,這樣就實現了Android視窗系統的UI多樣化。activity啟動時給activity視窗設定的Content
view 是從xml檔案中解析出來的,那麼android是怎麼樣對這個ContentView進行管理的呢,它的內部實現邏輯又是怎樣的呢?

    在進行分析之前,首先給出一個Activity的window和view系統的層級關係,這個層級關係就是在Activity設定完ContentView之後的狀況。    

    如。



下面來一一介紹各個層級的含義與作用

1.1  PhoneWindow

    PhoneWindow是Android中的最基本的視窗系統,每個Activity 均會建立一個PhoneWindow對象,是Activity和整個View系統互動的介面。


1.2  DecorView

    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設定視窗屬性。


1.3  System Layout

    目前android根據使用者需求預設了幾種UI 風格,通過PhoneWindow通過解析預置的layout.xml來獲得包含有不同Window decorations的layout,我們稱之為System Layout,我們將這個System Layout添加到DecorView中,目前android提供了8種System Layout,如。

    預設風格可以通過PhoneWindow方法requestFeature()來設定,需要注意的是這個方法需要在setContentView()方法調用之前調用。


1.4  Content Parent

    Content Parent這個ViewGroup對象才是真真正正的ContentView的parent,我們的ContentView終於找到了寄主,它其實對應的是System Layout中的id為”content”的一個FrameLayout。這個FrameLayout對象包括的才是我們的Activity的layout(每個System Layout都會有這麼一個id為”content”的一個FrameLayout)。



1.5  Activity Layout

    這個ActivityLayout便是我們需要向視窗設定的ContentView,現在我們發現其實它的地位很低,同時這一部分才是和user互動的UI部分,其上的幾層並不能響應並完成user輸入所期望達到的目的。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.