前言
Android的UI開發採用兩種方式:
- 1.編寫XML;
- 2.純代碼編寫
IOS的UI開發兩種方式:
- 1.storyboard、XIB
- 2.純代碼編寫
Android所有的UI組件底層都是繼承於View,一些組件繼承於ViewGroup的子類。Android在UI開發過程中採用的”組合器“設計模式進行UI的佈局。 佈局都是依靠一個UI容器(ViewGroup),在容器內添加UI組件的方式。
一、佈局管理器
1.基本的管理器
佈局管理器是繼承於ViewGroup的子類,佈局管理器主要用途:
- 容納UI組件
- 調整UI組件的位置和大小
佈局管理器的種類和簡單介紹:
佈局類型 | 佈局名稱 | 詳細介紹 |
---|---|---|
constraintlayout | 約束佈局 | 在Api9以上的Android系統,佈局嵌套過多的問題,以靈活的方式定位和調整小部件 |
LInearLayout | 線性佈局 | 行、列 模式的佈局 |
TableLayout | 表格佈局(繼承LInearLayout) | 多個列 |
FrameLayout | 幀佈局(繼承ViewGroup) | 幀:多個UI控件在同一個位置的同時佈局 |
RelativeLayout | 相對佈局 | 相對:一個UI組件相對其他組件 |
GridLayout | 網格佈局 | 把UI分成網格,對網格內在進行UI佈局 |
AbsoluteLayout | 絕對佈局 | 依靠的是絕對座標的佈局 |
每種佈局管理器之間的繼承關係:
2.AdapterView
AdapterView是一個重要的組件,它是一個抽象的基類,其子類在開發過程中非常常用。(就像IOS中的:UITableView、UICollectionView),接下來會介紹一下AdapterView及其子類的繼承關係.
接下來詳細介紹一下AdapterView子類中常用的幾種子類。
UI組件 | 組件名稱 | 介紹 |
---|---|---|
ListView | 列表視圖 | 非常常用的組件,用於垂直列表的形式顯示所有列表項(還要一個ListActivity可以直接使用) |
GridView | 網格視圖 | 按照行、列的方式來顯示多個組件 |
ExpandableListView | 可展開的列表組件 | 可以把列表項分爲機組,每組又可包含多個列表項 |
Spinner 、Gallery | 列表選擇框 | 一個列表選擇框 |
AdapterViewFlipper | 顯示上一個下一個圖片,相機中顯示圖片 | |
StackView | 疊在一起顯示View |
在上邊AdapterView的子類過程中,需要使用大量數據Adapter 和 AdapterView對應相互綁定顯示數據。
Adapter常用的實現類如下:
- ArrayAdapter:簡單、易用的Adapter。常用於將數組或List集合的多個值包裝成多個列表項
- SimpleAdapter:功能強大的Adapter,可用於將List集合的多個對象包裝成多個列表項
- SimpleCursorAdapter: 和SimpleAdapter類似,只是用於包裝Cursor提供的數據。
- BaseAdapter:通常用於被擴展。
以上僅簡單介紹了AdapterList和Adapter之間的關係,具體的詳細方法,可以參看Android開發文檔。
二、UI組件
UI組件大體可以分爲:圖、文、控制器等。接下來簡單講述一下Android的系統組件中對應的圖、文、控制器組件
1.TextView組件
TextView組件直接繼承於View,是一個在界面顯示文本類似於編譯器(被閹割的<不能編輯>)的UI組件,但是TextView有豐富的子類,提供豐富多樣的UI組件。
TextView及其常用子類的組件介紹
UI組件 | 組件名稱 | 介紹 |
---|---|---|
TextView | 文本框 | 主要用於顯示文字信息的UI組件,不能編輯(類似於IOS UILable) |
EditText | 編輯框 | 主要用於編輯輸入,例如:賬號、密碼、驗證碼等 |
Button | 按鈕 | 具有相應效果的 |
RadioButton | 單選按鈕 | 字面意思就可以理解 |
CheckBox | 複選框 | 類上 |
ToggleButton | 狀態開關按鈕 | 類上 |
Switch | 開關 | 類上 |
TextView及其常用子類的繼承關係如下所示:
TextView的詳細方法,可以參看Android開發文檔。
2.ImageView
ImageView繼承於View組件,主要功能用於顯示Image的組件。
UI 組件 | 組件名稱 | 介紹 |
---|---|---|
ImageView | 圖片顯示器 | 用於顯示Image、Drawable內容的UI組件 |
ImageButton | 圖片按鈕 | 顯示圖片的按鈕 |
QuickContactBadge | 顯示關聯到特定聯繫人的圖片 | |
ZoomButton | 縮放按鈕 | 一個包含放大、縮小按鈕的控件 |
ImageView及其常用子類的繼承關係如下所示:
ImageView的詳細方法,可以參看Android開發文檔。
3.ProgressBar
ProgressBar是一個進度的組件,同樣繼承於View。主要用於描述進度的一個組件。接下來會介紹ProgressBar及其子類。
UI組件 | 組件名稱 | 介紹 |
---|---|---|
ProgressBar | 進度條 | 加載過程中的進度條 |
SeekBar | 推動條 | 可以拖動的,播放器的進度 |
RatingBar | 星級評分條 |
ProgressBar及其子類的繼承關係如下:
ProgressBar的詳細方法,可以參看Android開發文檔。
三、其他組件
1.ViewAnimator
ViewAnimation是一個基類,它繼承了FrameLayout,所有它表現出FrameLayoutd的特徵,同時在View切換時表現出動畫效果。ViewAnimator的繼承關係及其子類如下圖所示:
ViewAnimator及其子類的介紹:
UI組件 | 組件名稱 | 介紹 |
---|---|---|
ViewSwitcher | 視圖切換組件 | 將多個View層疊在一起,每次顯示一個組件,View切換過程中指定動畫效果 |
ImageSwitcher | 圖片切換組件 | 具有和ViewSwitcher相似的特徵 |
TextSwitcher | 文本切換組件 | 具有和ViewSwitcher相似的特徵 |
ViewFlipper | 切換視圖組件 | 負責多個View的切換動畫 |
ViewAnimation的詳細方法,可以參看Android開發文檔。
2.其他的UI組件
2.1 UI基礎組件
UI組件 | 組件名稱 | 介紹 |
---|---|---|
Toast | 提示消息框(帶文字、圖片信息) | Toast提示消息不會獲得焦點,一段時間自動消失 |
CalenderView | 日曆視圖組件 | 用於顯示和選擇日期 |
DatePicker | 日期選擇器 (FrameLayout的子類) | 用於選擇日期 |
TimerPicker | 時間選擇器 (FrameLayout的子類) | 用於選擇時間 |
NumberPicker | 數值選擇器 | 讓用戶輸入數值:鍵盤輸入和拖動選擇 |
SearchView | 搜索框組件 | 用於文本框內輸入文字,通過監聽器監聽用戶輸入內容,進行搜索 |
TabHost | 選擇卡 | 可以方便的在窗口放置多個標籤,每個標籤獲得一個和外部容器相同大小的組件擺放區域 |
ScrollView | 滾動視圖 | 用於垂直、水平方向添加組件進行滾動的組件 |
Notification | 通知組件 | 一個具有全局效果的通知 |
AlertDialog | 提示對話框 | 功能最豐富、實際應用最廣的對話框 |
ProgressDialog | 進度對話框 | 這個對話框只是對進度條的封裝 |
DatePickerDialog | 日期選擇對話框 | 對話框對DatePicker的封裝 |
TimePickerDialog | 時間選擇對話框 | 對TimePicker的封裝 |
PopupWindow | 彈出窗口 | 彈出一個對話框的新組件 |
2.1 UI 菜單
UI組件 | 組件名稱 | 介紹 |
---|---|---|
SubMenu | 子菜單 | 代表一個子菜單,包含1~N個MenuItem |
ContextMenu | 上下文菜單 | 代表一個上下文菜單,包含1~N個MenuItem |
PopupMenu | 彈出式菜單 | 彈會顯示組件的下方或者上方 |
同時可以使用XML自定義Menu
2.1 UI 活動條(ActionBar)
ActionBar主要用於顯示、隱藏ActionBar。可以實現Bar的導航等功能
總結
Android系統中系統自帶的UI組件基本如上方列舉的,可以基本瞭解可以使用的UI組件,更好的學習Android的UI佈局,如果需要用戶可以自定義新的UI組件,本文主要是列舉Android中的UI組件和簡單介紹。
持續更新中……