下面的這張圖呈現了Android中最基本的UI構造塊。
該圖片表示的邏輯結構也是出自《Android系統原理及開發要點詳解》一書。
Android中的UI元素常常在布局檔案(Layout)中進行描述,在Java原始碼中通過findViewById()函數根據ID獲得每一個View的控制代碼,並且轉換成實際的類型來使用。
android.view.View的擴充者也稱作widget,通常包含在android.Widget包中,也就是在UI元素中使用的UI元素。
這些android.view.View的擴充者,通常可以在應用程式中直接使用,也可以在應用程式中再擴充一次使用。
android.view.View的一個重要的擴充者是android.view.ViewGroup類,這個類表示一個視圖的集合,在這個視圖的集合可以包含眾多的子視圖。android.view.ViewGroup類的擴充者即是多個視圖的組合,本身也是一個視圖。
1、Button類的擴充關係如下所示:
-android.view.View
-android.widget.TextView
-android.widget.Button
Button類擴充了TextView類,TextView類是View的直接擴充者,表示一個文本地區。Android中以文本為主要內容的各種UI元素均擴充自這個類。
Button類具有一個名為CompoundButton(組合按鈕)的擴充者,CompoundButton又有了RadioButton CheckBox和ToggleButton(開關按鈕,包含開關兩種狀態)。
2、ImageView類是View的直接擴充者。它又被稱為映像視圖,是Android中可以直接顯示圖形的UI元素,其中的映像源是其核心。ImageView有多種不同的設定映像源的方法:
void setImageResource(int resId) //設定映像源的資源ID
void setImageURI(Uri uri) //設定映像源的URI
void setImageBitmap(Bitmap bm) //設定一個Bitmap的位元影像為映像源。
另外,ImageView還支援縮放、剪裁等功能。
3、ImageButton:映像按鈕
很簡單就是顯示一個帶有映像的按鈕。
注意:在Android中,映像按鈕ImageButton和普通按鈕Button並無擴充關係。
4、ViewGroup
ViewGroup1是一個視圖組,以水平布局的方式包含了View2和View3;
ViewGroup2是一個視圖組,以垂直的方式包含了View4、ViewGroup3和ViewGroup4.
ViewGroup4又以水平布局的方式包含了View5和View6。
根據以上的原則,當螢幕需要包含多個視圖時,必須組織在一個視圖組中。
由於視圖組本身也是一個視圖,因此視圖組還可以包含視圖組。
注意:在這裡面有一個主要的限制:在沒有視圖組的情況下,兩個以上的視圖(也包括視圖組)是不能並列的。
ViewGroup視圖組具有一系列的擴充者:AdapterView、 AbsoluteLayout、 FrameLayout、LinearLayout、 RelativeLayout、Adapterview<T extends android.widget.Adapter>。
在Android中,有一些預置的ViewGroup可以直接像View一樣使用(如WebView),還有一些ViewGroup本身沒有功能,只是提供螢幕上的各種布局(如AbsoluteLayout、RelativeLayout、FrameLayout等)