Android 自定義View(一)原理

在Android中,View扮演着很重要的角色,簡單說,View是Android在視覺上的呈現。在開發中,每時每刻都在和View打交道,常見的由Android提供使用的有:TextView,ImageView,ListView..等等。如果使用一些酷的效果,當然要我們自定義View了,在自定義View之前,先來簡單記錄下View的工作原理,幫助以後更好的理解自定義View的使用。
說道View原理,肯定要說道頂層的 ViewRootDecorView

一、ViewRoot

ViewRoot 對應於 ViewRootImpl 類,是連接WindowManager 和 DecorView 的紐帶,View 的三大流程是通過 ViewRoot 來完成的。在 ActivityThread 中,當 Activity 對象被創建完畢後,會將 DecorView 添加到 Window 中,同時會創建 ViewRootImpl 對象,並將 ViewRootImpl 對象和 DecorView 建立關聯。借圖說明:

這裏寫圖片描述

View 的繪製流程是從 ViewRoot 的 performTraversals 方法開始的,經過 Measure、layout 和 draw 三個過程才能將一個View繪製出來,performTraversals 的大致流程:

這裏寫圖片描述

圖所示,performTraversals 會依次調用 ViewGroup 的 三個方法,這個三個方法分別完成 View 的三個方法,反覆完成整個View樹的遍歷。

二、DecorView

DecorView 作爲 頂級 View,它本質上是一個FrameLayout,DecorView有唯一一個子View,它是一個垂直LinearLayout,包含兩個子元素,一個是TitleView(ActionBar的容器),另一個是ContentView(窗口內容的容器)。關於ContentView,它是一個FrameLayout(android.R.id.content),我們平常用的setContentView就是設置它的子View。上圖還表達了每個Activity都與一個Window(具體來說是PhoneWindow)相關聯,用戶界面則由Window所承載。

總結

主要說了View的工作繪製原理,有圖和些簡單描述。
Android 自定義View篇:

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章