標(biāo)注:本文為個(gè)人整理,僅做自己學(xué)習(xí)參考使用,請(qǐng)勿轉(zhuǎn)載和轉(zhuǎn)發(fā)
2018-05-23: 初稿,參考博主coder-pig
本部分主要介紹Android中的UI組建,主要包括各類組件
1、UI 概述
- 在Android APP中,所有的用戶界面元素都是由View和ViewGroup的對(duì)象構(gòu)成的。
- View是繪制在屏幕上的用戶能與之交互的一個(gè)對(duì)象。
- 而ViewGroup則是一個(gè)用于存放其他View(和ViewGroup)對(duì)象的布局容器!
- Android為我們提供了一個(gè)View和ViewGroup子類的集合,集合中提供了一些常用的輸入控件(比如按鈕和文本域)和各種各樣的布局模式(比如線性或相對(duì)布局)
1.1 用戶的布局接口
你的APP的用戶界面上的每一個(gè)組件都是使用View和ViewGroup對(duì)象的層次結(jié)構(gòu)來(lái)構(gòu)成的,比如 圖 1。每個(gè)ViewGroup都是要給看不見的用于組織子View的容器,而它的子View可能是輸入控件 或者在UI上繪制了某塊區(qū)域的小部件。有了層次樹,你就可以根據(jù)自己的需要,設(shè)計(jì)簡(jiǎn)單或者復(fù) 雜的布局了(布局越簡(jiǎn)單性能越好)

定義你的布局,你可以在代碼中實(shí)例化View對(duì)象并且開始構(gòu)建你的樹,但最容易和最高效的方式來(lái)定義你的布局則是使用一個(gè)XML文件,用XML來(lái)構(gòu)成布局更加符合人的閱讀習(xí)慣,而XML類似與HTML 使用XML元素的名稱代表一個(gè)View。所以< TextView >元素會(huì)在你的界面中創(chuàng)建一個(gè)TextView控件,而一個(gè)< LinearLayout >則會(huì)創(chuàng)建一個(gè)LinearLayout的容器! 舉個(gè)例子,一個(gè)簡(jiǎn)單簡(jiǎn)單的垂直布局上面有一個(gè)文本視圖和一個(gè)按鈕,就像下面這樣:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I am a TextView" />
<Button android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="I am a Button" />
</LinearLayout>
當(dāng)你的App加載上述的布局資源的時(shí)候,Android會(huì)將布局中的每個(gè)節(jié)點(diǎn)進(jìn)行實(shí)例化成一個(gè)個(gè)對(duì)象,然后你可以為這些定義一些額外的行為,查詢對(duì)象的狀態(tài),或者修改布局。 完整創(chuàng)建UI布局的引導(dǎo),請(qǐng)參考XML Layouts
1.2 用戶組件接口
- 你無(wú)需全部用View和ViewGroup對(duì)象來(lái)創(chuàng)建你的UI布局。Android給我們提供了一些app控件,標(biāo)準(zhǔn)的UI布局,你只需要定義內(nèi)容。這些UI組件都有其屬性介紹的API文檔,比如操作欄,對(duì)話框和狀態(tài)通知欄等。
- Android里的圖形界面都是由View和ViewGroup以及他們的子類構(gòu)成的:
- View:所有可視化控件的父類,提供組件描繪和時(shí)間處理方法
- ViewGroup: View類的子類,可以擁有子控件,可以看作是容器 Android UI中的控件都是按照這種層次樹的結(jié)構(gòu)堆疊得,
- 創(chuàng)建UI布局的方式有兩種, 自己在Java里寫代碼或者通過XML定義布局,后者顯得更加方便和容易理解! 也是我們最常用的手段!另外我們一般很少直接用View和ViewGroup來(lái)寫布局,更多的 時(shí)候使用它們的子類控件或容器來(lái)構(gòu)建布局!
2、 布局接口
- Android中的布局,Android中有六大布局,分別是:
- LinearLayout (線性布局)
- RelativeLayout (相對(duì)布局)
- TableLayout (表格布局)
- FrameLayout (幀布局)
- AbsoluteLayout (絕對(duì)布局)
- GridLayout (網(wǎng)格布局)