UI組件之佈局管理器
A. 線性佈局(LinearLayout):控制各組件橫向排列,到頭之後,剩下的組件將不會顯示出來。常用屬性
1. android:baselineAligned(boolean):該屬性佈局爲false將阻止該佈局管理器與它的子元素基線對齊。相關方法setBaselineAligned(boolean)。
2. android:divider:設置垂直佈局時兩組件的分割條。相關方法:
setDividerDrawable(Drawable)
3. android:gravity:設置組件對齊方式,支持top、buttom、left、right等幾個屬性值,同時也支持組合的屬性值。方法:set Gravity(int)
B. 表格佈局(TableLayout):TableLayout繼承了LinearLayout,本質依然是線性佈局管理器。通過添加TableRow來控制其他組件的行和列。單元格設置爲寬度可以收縮(Shrinkable)、寬度可以被拉伸(Strechable)、單元格被隱藏(Collapsed)。TableLayout支持所有的LinearLayout 包含的XML屬性,除此之外還有以下屬性:
1. android:collapsedColumns:相關方法setColumnCollapsed(int,boolean)設置需要被隱藏的列序號,多個用逗號隔開。
2. android: shrinkcolumns:相關方法setShrinkAllColumns( boolean)設置允許被收縮的列序號,多個用逗號隔開。
3. android: strechcolumns:相關方法 set StrechAllColumns(boolean)設置允許被拉伸的列的列序號,多個用逗號隔開
C. 幀佈局(FrameLayout):直接繼承了ViewGroup組件,爲每個組件創建一個空白區域,每個子組件佔用一幀,根據其gravity屬性對齊。常用屬性:
1. android:foreground:相關方法setForeground(Drawable) 設置該幀容器的前景圖像。
2. android:foregroundGravity:相關方法 setForegroundGravity(int)定義繪製前景圖像的gravity屬性。
D. 相對佈局(RalativeLayout):子組件的位置總是相對於兄弟組件、父組件、容器決定的。提供了一個內部類:RalativeLayout.LayoutParams
RalativeLayout常用屬性:
1. android:gravity: 相關方法setGravity(int),設置該佈局容器內各子組件的對齊方式。
2. android:ignoreGravity: 相關方法setIgnoreGravity(int) 設置哪個組件不受gtavity屬性的影響。
UI組件之TextView及其子類
A. 文本框(TextView)與編輯框(EditText)的功能和用法:
1. TextView:直接繼承自View,還是EditText、Button的父類。子類EditText允許用戶編輯文本框內容。提供了大量的XML屬性,通過這些屬性來控制TextView中文本的行爲:設置字號(android:textSize=”xx pt”)、指定背景(android:background=””)、字母大寫、增加鏈接(android:autoLink=”email/phone”)等
2. EditText:它使用了大部分TextView的XML屬性,可以接受用戶輸入,最重要的屬性就是inputType。EditText還派生了兩個類,AutoCompleteTextVeiw:帶有自動完成功能的編輯框;ExtractEditText: 並不是UI組件。而是EditText組件的底層服務類,負責全屏輸入法支持。
B. 按鈕組件的功能和用法
1. Button繼承了TextView,按鈕提供給用戶單擊,觸發onclick事件。同樣可以利用textview的XML屬性來爲按鈕組件設置不同的樣式風格背景等。使用9Patch圖片作爲按鈕背景可以按照自己的意圖縮放圖片某個部分。後綴名爲.9.png。
2. 在活動中,通過findViewById()方法獲取佈局文件中的button組件。傳入的數據爲R.id.button,返回一個View對象,在向下轉型爲Button類型得到按鈕實例,再通過調用SetOnClickListener()方法爲按鈕註冊一個監聽器,點擊就執行onClick()方法。
3. 單選按鈕(RadioButton)和複選框(CheckBox):繼承自Button類,多了一個可選中的功能(android:cheched屬性)。
4. 狀態開關按鈕ToggleButton與開關Switch:也是Button的子類,類似於複選框,通常用於切換程序的某種狀態。
C. 時鐘(AnalogClock和DigitalClock):
1. DigitalClock本身就繼承了TextView,顯示內容總是當前時間。
2. AnalogClock則繼承View組件,重寫了View的onDraw方法。
D. 計時器(Chronometer)繼承自TextView,顯示從某個時刻到現在經歷的時長。
常用方法有:setBase(long base ):設置起始時間;setFormat(String format):設置顯示時間制式;start():開始計時;stop():停止計時;
SetOnChronometerTickListener(Chronometer.OnChronometerTickListener):爲計時器綁定事件監聽器。
UI組件之ImageView及其子類
ImageView繼承自View組件,主要用於顯示圖片。派生的子類有ImageButton、ZoomButton等。屬性中android:scaleType屬性設置顯示的圖片如何移動和縮放以適應ImageView的大小,有多個屬性值。
UI組件之AdapterView及子類
A. AdapterView本身是一個抽象基類,繼承了ViewGroup,本質是容器,可以包含多個列表項(由Adapter提供)並將它們用合適的方式顯示出來(調用AdapterView的setAdapter(Adapter)方法設置Adapter即可)。派生的子類用法相似,只是在顯示界面有一定區別。
B. 三個子類:AbsListView、AbsSpinner和AdapterViewAnimator,依然是抽象的,實際使用時依然用子類。
C. 列表視圖(ListView)和ListActivity:ListView以垂直列表的形式顯示列表項,可以直接用ListView進行創建,也可以讓Activity繼承ListActivity(相當於該Activity顯示組件爲ListView)。
UI組件之AdapterView及子類
A. AdapterView本身是一個抽象基類,繼承了ViewGroup,本質是容器,可以包含多個列表項(由Adapter提供)並將它們用合適的方式顯示出來(調用AdapterView的setAdapter(Adapter)方法設置Adapter即可)。派生的子類用法相似,只是在顯示界面有一定區別。
B. 三個子類:AbsListView、AbsSpinner和AdapterViewAnimator,依然是抽象的,實際使用時依然用子類。
C. 列表視圖(ListView)和ListActivity:ListView以垂直列表的形式顯示列表項,可以直接用ListView進行創建,也可以讓Activity繼承ListActivity(相當於該Activity顯示組件爲ListView)。
D. adapter接口及實現類:派生了兩個子接口(ListAdapter和SpinnerAdapter)ListAdapte爲AbsListView提供列表項,而SpinnerAdapter爲AbsSpinner提供列表項。常用實現類有:
1. ArrayAdapter:通常用於將數組或List集合的多個值包裝成多個列表項
2. SimpleAdapter:可用於將List集合的多個對象包裝成多個列表項
3. SimpleCursorAdapter:類似於SimpleAdapter只用於包裝Cursor提供的數據
4. BaseAdapter:通常用於被擴展
創建ArrayAdapter時必須指定如下三個參數:
1. Context:代表了訪問整個Android應用的接口,幾乎創建所有組件都需要傳入Contexe對象
2. textViewResourceld:一個資源id,該資源id代表一個TextView
3. 數組或List:該數組或List將負責爲多個列表項提供數據。
E. 自動完成文本框(AutoCompleteTextView)的功能和用法:
從EditText派生而出,當用戶輸入一定字符後自動完成文本框會顯示一個下拉菜單,供用戶選擇,當用戶選擇摸個菜單項之後,AutoCompleteTextView按用戶選擇自動填寫該文本框。使用AutoCompleteTextView,只要爲它設置一個Adapter,該Adapter封裝了AutoCompleteTextView預設的提示文本。
F. 網絡視圖(GridView)的功能和用法:
用於在界面上按行、列分佈的方式來顯示多個組件。和ListView有共同的父類(AbsListView),ListView只顯示一列,GridView則可以顯示多列。可以通過四種創建Adapter來提供顯示數據。
G. 可展開的列表組件(ExpandableListView):
是List的子類,把應用中的列表項分爲幾組,每組又可包含多個列表項。實現ExpandableListView有如下三種方式:
1. 使用SimpleExpandableListAdapter將兩個List集合包裝成ExpandableListAdapter。
2. 擴展Base ExpandableListView實現ExpandableListAdapter
3. 使用SimpleCursorTreeAdapter將Cursor中的數據包裝成simpleCursorTreeAdapter
H. Spinner的功能和用法
一個列表選擇框,彈出一個菜單供用戶選擇。只要爲Spinner指定android:entries屬性即可實現Spinner,如需動態的進行定製,則需要Adapter爲Spinner提供列表項。
I. 畫廊視圖(Gallery)的功能和用法:
顯示一個水平的列表選擇框,允許用戶通過拖動來查看上一個、下一個列表項。只要爲它提供一個內容Adapter即可。Adapter方法返回的View將作爲Gallery列表的列表項。可以通過OnItemSelectdListener監聽器監控Gallery選擇項的改變。
J. AdapterViewFlipper的功能和用法:
顯示Adapter提供的多個View組件,但每次只能顯示一個,程序可以通過showPrevious()和showNext()方法控制。還可以在切換時使用漸隱漸現上午動畫效果。還可以調用startFlipping()控制它自動播放下一個View組件。
K. StackView的功能和用法:
也用於顯示Adapter提供的系列View。將會以堆疊的方式來顯示多個列表項。提供了兩種控制方式:
1. 拖走StackView中處於頂端的View。下一個View將會顯示出來。將上一個View拖進StackView,將使之顯示出來。
2. 通過調用StackView的showNext()、showPrevious()控制顯示上一個、上一個組件。
UI組件之ProgressBar及其子類:
本身代表了進度條組件,它還派生了兩個常用組件,SeekBar和RatingBar。
A. 進度條(ProgressBar)的功能和用法:用於向用戶顯示某個耗時操作完成的百分比,進度條可以動態的顯示進度,避免長時間執行某個操作時,讓用戶感覺失去響應。@android:style/Widget.ProgressBar.Horizontal(水平進度條)
@android:style/Widget.ProgressBar.Inverse(普通大小的環形進度條)
@android:style/Widget.ProgressBar.Large(大環形進度條)
@android:style/Widget.ProgressBar.Large.Inverse(大環形進度條)
@android:style/Widget.ProgressBar.Small(小環形進度條)
@android:style/Widget.ProgressBar.Small.Inverse(小環形進度條)
常用方法:setProgress(int ):設置進度的完成百分比;incrementProgressBy(int):設置進度條的進度增加或減少。參數爲正→增加,參數爲負→減少。
顯示在標題上的進度條:調用Activity的requestWindowFeature()方法,傳入
Window.FEATURE_INDETERMINATE_PROCESS在窗口白提上顯示不帶進度的進度條,傳入Window.FEATURE _PROCESS則顯示帶進度的進度條。調用Activity的setProgress
-BarVisibility(boolean)或setProgressBarIndeterminateVisibility(boolean)方法即可控制進度條的顯示和隱藏。
B. 拖動條(SeekBar)的功能和用法:進度條採用顏色填充來表明進度完成的程度,而拖動條則通過滑塊的位置來標示數值,並且允許用戶拖動滑塊來改變值。滑塊外觀通過如下屬性來指定。android:thumb: 指定一個Drawable 對象,該對象作爲自定義滑塊。爲它綁定一個OnSeekBarChangeListener監聽器以響應滑塊位置的改變。
C. 星級評分條(RatingBar)的功能和用法:
它和拖動條有共同的父類:AbsSeekBar,而RatingBar通過星星來表示進度。通過綁定OnRatingBarChangeListener監聽器,來響應星級評分條的改動。
UI組件之ViewAnimator及其子類
A. ViewAnimator是一個基類,繼承了FrameLayout,因此它表現出FrameLayout的特徵。可以將多個View組件疊在一起,在切換時表現出動畫效果。
B. ViewSwitcher的功能和用法:每次只顯示一個組件,支持切換時指定的動畫效果。一般通過調用ViewSwitcher的setFactory(ViewSwitcher.ViewFactory)方法爲之設置ViewFactory,並由該ViewFactory爲之創建View即可。
C. 圖像切換器(ImageSwitcher)的功能和用法:
繼承了ViewSwitcher,因此具有和ViewSwitcher一樣的特徵;使用方法:爲ImageSwitcher提供一個ViewFactory,該ViewFactory生成的View組件必須是ImageView。需要切換圖片時,只要調用ImageSwitcher的setImageDrawable(Drawable drawable)、setImageResource(intresid)和setImageURI(Uri uri)方法切換圖片即可。
D. 文本切換器(TextSwitcher)的功能和用法:
繼承了ViewSwitcher,因此可以在切換View組件時使用動畫效果。使用TextSwitcher也需要設置一個ViewFactory。與ImageSwitcher不同的是ViewFactory的makeView ()方法必須返回一個TextView組件。
E. ViewFlipper的功能與用法:
繼承了ViewAnimator,可以調用addView(View v)添加多個組件,之後可以使用動畫控制多個組件之間的切換效果。ViewFlipper需要開發者通過addView(View v)添加多個View。
各種雜項組件:
A. 日曆視圖(CalendarView)組件的功能和用法:
日曆視圖可用於顯示和選擇日期,用戶既可以選擇一個日期,也可以通過觸摸來滾動日曆。也可以調用CalendarView的setOnDateChangeListener()方法爲此控件的點擊事件添加事件監聽器。
B. 日期、時間選擇器(DatePicker和TimePicker)的功能和用法
DatePicker和TimePicker都是從FrameLayout派生而來,其中DatePicker 供用戶選擇日期;而TimePicker則供用戶選擇時間。
C. 數值選擇器(NumberPicker)的功能和用法:
用於讓用戶輸入數值,既可以輸入也可以通過拖動來選擇數值。如下三個方法:
setMinValue(int minVal):設置該組件支持的最小值
setMaxValue(int maxVal): 設置該組件支持的最大值
setValue(int value):設置該組件的當前值
D. 搜索框(SearchView)的功能和用法:
可以讓用戶在文本框中輸入文字,並允許通過監聽器監控用戶輸入,當用戶提交搜索時,也可以通過監聽器執行實際的搜索。
常用方法:
setconifiedByDedault(Boolean iconified):設置該搜索框默認是否自動縮小爲圖標。
setSubmitButtonEnabled(Boolean enabled):設置是否顯示搜索按鈕。
setQueryHint(CharSequence hint):設置搜索框內默認顯示的提示文本。
setOnQueryTextListener(SearchView.OnQueryTextListener):爲該搜索框設置事件監聽器。
E. 選項卡(TabHost)的功能和用法
TabHost可以非常方便的在窗口上放置多個標籤頁,每個標籤頁相當於獲得了一個與外部容器相同大小的組件擺放區域。通過這種方式,就可以在一個容器中放置更所組件。
F. 滾動視圖(ScrollView)的功能和用法
用於爲普通組件添加滾動條的組件。最多隻能包含一個組件,而ScrollView的作用就是爲該組件添加垂直滾動條。
G. Notification的功能和用法:
Notification是顯示在手機狀態欄的通知,代表的是一種具有全局效果的通知,一般通過NotificationManager服務來發送Notification。