Android屏幕元素層次結構

android.app.Activity
對於一個Android應用來講,android.app.Activity類實例是一個最基本的功能單元。一個Activity實例能夠作不少的事情,可是它自己沒法顯示在屏幕上,而是藉助於Viewgroup和View,這兩個纔是Android平臺上最基本的兩個用戶界面表達單元。android

android.view.ViewGroup
ViewGroup是一個特殊的View類,它繼承於android.view.View。它的功能就是裝載和管理下一層的View對象和ViewGroup對象。ViewGroup是佈局管理器(layout)及view容器的基類。
ViewGroup中,還定義了一個嵌套類ViewGroup.LayoutParams。這個類定義了一個顯示對象的位置、大小等屬性,view經過LayoutParams中的這些屬性值來告訴父級,它們將如何放置。
在這裏,繼承於ViewGroup的一些主要的佈局類以下:
一、FrameLayout:最簡單的一個佈局對象。它裏面只顯示一個顯示對象。全部的顯示對象都將會固定在屏幕的左上角,不能指定位置。但容許有多個顯 示對象,但後一個將會直接在前 一個之上進行覆蓋顯示,把前一個部份或所有擋住(除非後一個是透明的)。
二、LinearLayout:以單一方向對其中的顯示對象進行排列顯示,如以垂直排列顯示,則佈局管理器中將只有一列;如以水平排列顯示,則佈局管理器中將只有一行。同時,它還能夠對個別的顯示對象設置顯示比例。
三、TableLayout:以擁有任意行列的表格對顯示對象進行佈局,每一個顯示對象被分配到各自的單元格之中,但單元格的邊框線不可見。
四、AbsoluteLayout:容許以座標的方式,指定顯示對象的具體位置,左上角的座標爲(0, 0),向下及向右,座標值變大。這種佈局管理器因爲顯示對象的位置定死了,因此在不一樣的設備上,有可能會出現最終的顯示效果不一致。
五、RelativeLayout:容許經過指定顯示對象相對於其它顯示對象或父級對象的相對位置來佈局。如一個按鈕能夠放於另外一個按鈕的右邊,或者能夠放在佈局管理器的中央。
在Android中,提供了不少的佈局管理器,這裏也不一一列舉,開發者能夠根據實際須要,選擇合適的佈局管理器。

android.view.View

View是全部view類的基類,一個view一般佔用屏幕上的一個矩形區域,並負責繪圖及事件處理。View是全部窗體部件的基類,是爲窗體部件服務的,這裏的窗體部件即UI控件,如一個按鈕或文本框。Android已經爲咱們提供了一系列的標準UI控件供咱們直接使用,同時,咱們也能夠經過繼承於 View類或View的子類,來實現咱們自定義的UI控件。
要定製咱們本身的UI控件,須要重載View類中的一些方法,如下表格列出View提供出來的,供重載的方法,這些方法沒必要都要重載,但至少要實現onDraw(android.graphics.Canvas)方法。
app

當你爲一個 activty 添加一個可見的 view, 而且運行這個activty時,android一般狀況下會自動按照下列順序來觸發view的相關事件佈局

onAttachedToWindow
onMeasure
onSizeChanged
onLayout
onDraw  spa

對於Android應用中的一個屏幕,它的屏幕元素是按層次結構來描述的。要將一個屏幕元素層次樹綁定在一個屏幕上顯示,Activity會調用它的 setContentView()方法而且傳入這個層次樹的根節點引用。當Activity被激活而且得到焦點時,系統會通知activity而且請求根節點去計算並繪製樹,根節點就會請求它的子節點去繪製它們本身。
每一個樹上的ViewGroup節點會負責繪製它的子節點。ViewGroup會計算它的有效空間,佈局全部的子顯示對象,並最終調用全部的子顯示對象的 Draw()方法來繪製顯示對象。各個子顯示對象能夠向父對象請求它們在佈局中的大小和位置,但最終決定各個子顯示對象的大小和位置的是父對象。orm

相關文章
相關標籤/搜索