版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第4章Android用戶界面程序設(shè)計目錄4.1View基礎(chǔ) 4.2界面布局 4.3Widget簡單組件 4.4Android事件處理 4.5對話框 4.6Android常用高級控件4.7Fragment基礎(chǔ) 684.8資源管理 80學習目標了解Android中的基本UI元素能夠使用布局管理器對界面進行管理掌握界面交互事件處理機制及實現(xiàn)步驟能夠熟練使用常用的Widget簡單控件掌握對話框的使用掌握Android控件控件的使用能夠使用Android系統(tǒng)的資源管理掌握Fragment控件的使用4.1View基礎(chǔ)4.2界面布局Android中提供了兩種創(chuàng)建布局的方式:(1)在XML布局文件中聲明
(2)在程序中直接實例化布局及其控件常見的Android布局方式有:線性布局(LinearLayout)相對布局(RelativeLayout)表格布局(TableLayout)網(wǎng)格布局(GridLayout)絕對布局(AbsoluteLayout)框架布局(FrameLayout)扁平化布局(ConstraintLayout)4.2.1線性布局LinearLayout是一種線性排列的布局,布局中的控件按照水平(horizontal)或垂直(vertical)兩種方向排列。4.2.2相對布局RelativeLayout是一組相對排列的布局方式,在相對布局容器中子控件的位置總是相對于兄弟控件或父容器4.2.3表格布局TableLayout類似于表格形式,以行和列的方式來布局子控件。
在TableLayout布局中,可以通過以下三種方式對單元格進行設(shè)置。(1)Shrinkable:如果某個列被設(shè)置為Shrinkable,那么該列中所有單元格的寬度都可以被收縮,以保證表格能適應(yīng)父容器的寬度。(2)Stretchable:如果某個列被設(shè)置為Stretchable,那么該列中所有單元格的寬度都可以被拉伸,以保證控件能夠完全填滿表格的空余空間。(3)Collapsed:如果某個列被設(shè)置為Collapsed,那么該列中所有單元格都會被隱藏。4.2.4絕對布局絕對布局是通過指定x、y坐標來控制每一個控件的位置,放入該布局的控件需要通過android:layout_x和android:layout_y兩個屬性指定其在屏幕上確切的位置。把屏幕看作一個坐標軸,左上角為(0,0),往屏幕下方為y正半軸,右方為x正半軸。4.2.5框架布局框架布局(FrameLayout)又稱幀布局,是Android布局中最簡單的一種,框架布局為每個加入其中的控件創(chuàng)建了一塊空白區(qū)域。采用框架布局的方式設(shè)計界面時,只能在屏幕左上角顯示一個控件,如果添加多個控件,這些會依次重疊在屏幕左上角顯示,且會透明顯示之前的文本。4.2.6網(wǎng)格布局網(wǎng)格布局(GridLayout),是Android4.0新增的布局管理器,因此需要在4.0之后的版本才能使用。它的作用類似于table(表格),它把整個容器劃分為rows×columns個網(wǎng)格,每個網(wǎng)格可以放置一個組件。GridLayout提供了setRowCount(int)和setColumnCount(int)方法來控制該網(wǎng)格的行數(shù)量和列數(shù)量。4.3Widget簡單組件4.3.1文本控件文本控件主要包括TextView控件和EditText控件。其中TextView控件繼承自View類,其主要功能是向用戶顯示文本內(nèi)容,同時可選擇性地讓用戶編輯文本。從功能上來說,一個TextView就是一個完整的文本編輯器,只不過其本身被設(shè)置為不允許編輯,其子類EditText被設(shè)置為允許用戶對內(nèi)容進行編輯。4.3.2Button和開關(guān)控件Button是常用的普通按鈕控件,用戶能夠在該控件上點擊,引發(fā)相應(yīng)的響應(yīng)事件。ToggleButton和Switch都是選擇類型的按鈕,具有選中和未選中兩種狀態(tài)。4.3.3ImageButton和ImageView控件ImageView繼承自View組件,它的主要功能是用于顯示圖片,除此之外,ImageView還派生了ImageButton、ZoomButton等組件,因此ImageView支持的XML屬性、方法,基本上也可以應(yīng)用于ImageButton,ZoomButton等組件。4.3.4RadioButton和RadioGroup控件
RadioGroup是單選按鈕組,是一個允許容納多個RadioButton的容器。在沒有RadioGroup的情況下,RadioButton可以分別被選中;當多個RadioButton同一個RadioGroup按鈕組中,RadioButton只允許選擇其中之一。RadioButton和RadioGroup的關(guān)系如下:(1)RadioButton表示單個圓形單選框,RadioGroup是一個可以容納多個RadioButton的容器。(2)同一個RadioGroup中,只能有一個RadioButton被選中;不同的RadioGroup中,RadioButton互不影響。(3)通常情況下,一個RadioGroup中至少有2個RadioButton。一般一個RadioGroup組中,會默認有一個RadioButton被選中,并將其放置在RadioGroup的起始位置。4.3.5CheckBox復選框CheckBox復選框是一種具有雙狀態(tài)的按鈕,具有選中或者未選中兩種狀態(tài)。CheckBox和RadioButton的主要區(qū)別如下:(1)RadioButton單選按鈕被選中后,再次單擊時無法改變其狀態(tài);而CheckBox復選框被選中后,可以通過單擊來改變其狀態(tài)。(2)在RadioButton單選按鈕組中,只允許選中一個;而在CheckBox復選框組中,允許同時選中多個。(3)大部分UI框架中默認RadioButton以圓形表示,CheckBox都以正方形表示。4.4Android事件處理Android提供了兩種方式的事件處理:基于回調(diào)的事件處理和基于監(jiān)聽的事件處理。
對于基于監(jiān)聽器的事件處理主要是為Android界面組件綁定特定的事件監(jiān)聽器;
對于基于回調(diào)的事件處理,主要是重寫Android構(gòu)件特定的回調(diào)函數(shù),Android大部分界面組件都提供了事件響應(yīng)的回調(diào)函數(shù),只需要重寫就可以。4.4.1基于監(jiān)聽的事件處理Android系統(tǒng)中引用了Java事件處理機制,包括事件、事件源和事件監(jiān)聽器三個事件模型,與基于回調(diào)的事件處理相比,更具有“面向?qū)ο蟆毙再|(zhì)的事件處理方式。事件(Event):這是一個描述事件源狀態(tài)改變的對象,事件對象不是通過new運算符創(chuàng)建的,而是在用戶觸發(fā)事件時由系統(tǒng)生成的對象。事件包括鍵盤事件、觸摸事件等,一般作為事件處理方法的參數(shù),以便從中獲取事件的相關(guān)信息。?事件源(EventSource):產(chǎn)生事件的來源,通常是各種組件,如按鈕等。事件監(jiān)聽器(EventListener):負責監(jiān)聽事件源發(fā)生的事件,并對不同的事件做相應(yīng)的處理。在程序中實現(xiàn)事件監(jiān)聽器,通常有以下四種形式:(1)Activity本身作為事件監(jiān)聽器:通過Activity實現(xiàn)監(jiān)聽器接口,并實現(xiàn)事件處理方法。(2)匿名內(nèi)部類形式:使用匿名內(nèi)部類創(chuàng)建事件監(jiān)聽器對象。(3)內(nèi)部類或外部類形式:將事件監(jiān)聽類定義為當前類的內(nèi)部類或普通的外部類。(4)綁定標簽:在布局文件中為指定標簽綁定事件處理方法。通常實現(xiàn)基于監(jiān)聽的事件處理步驟如下:(1)創(chuàng)建事件監(jiān)聽器。(2)在事件處理方法中編寫事件處理代碼。(3)在相應(yīng)的組件上注冊監(jiān)聽器。4.4.2基于回調(diào)機制的事件處理基于回調(diào)機制的事件主要有onKeyDown()方法、onKeyUp()方法、onTouchEvent()方法、onTrackBallEvent()方法、onFocusChanged()方法。onKeyDown()方法是接口KeyEvent.Callback中的抽象方法,所有的View全部實現(xiàn)了該接口并重寫了該方法,該方法用來捕捉手機鍵盤被按下的事件。方法的聲明格式如下所示:publicbooleanonKeyDown(intkeyCode,KeyEventevent)onKeyUp()同樣是接口KeyEvent.Callback中的一個抽象方法,并且所有的View同樣全部實現(xiàn)了該接口并重寫了該方法,onKeyUp()方法用來捕捉手機鍵盤按鍵抬起的事件,方法的聲明格式如下所示:
publicbooleanonKeyUp(intkeyCode,KeyEventevent)onTouchEvent()方法是手機屏幕事件的處理方法。該方法在View類中定義,并且所有的View子類全部重寫了該方法,應(yīng)用程序可以通過該方法處理手機屏幕的觸摸事件。該方法的聲明格式如下所示:publicbooleanonTouchEvent(MotionEventevent)onTrackBallEvent是手機中軌跡球的處理方法。所有的View同樣全部實現(xiàn)了該方法。該方法的聲明格式如下:
publicbooleanonTrackballEvent(MotionEventevent)onFocusChanged()方法只能在View中重寫,該方法是焦點改變的回調(diào)方法,當某個控件重寫了該方法后,當焦點發(fā)生變化時,會自動調(diào)用該方法來處理焦點改變的事件。該方法的聲明格式如下。protectedvoidonFocusChanged(booleangainFocus,intdirection,RectpreviouslyFocusedRect)4.5對話框1、提示對話框AlertDialogAlertDialog對話框可以包含若干按鈕(0~4個不等)和一些可選的選項,一般包括普通對話框、列表對話框、單選按鈕和復選框?qū)υ捒?。一般來說,AlertDialog的功能能夠滿足常見的對話框用戶界面的需求。2、進度對話框ProgressDialogProgressDialog可以顯示進度輪(wheel)和進度條(bar),由于ProgressDialog繼承自AlertDialog,所以在進度對話框中也可以添加按鈕。3、日期選擇對話框DatePickerDialogDatePickerDialog對話框可以顯示并允許用戶選擇日期。
4、時間選擇對話框TimePickerDialogTimePickerDialog對話框可以顯示并允許用戶選擇時間。普通對話框中只顯示提示信息、“確定”按鈕和一個“取消”按鈕,通過AlertDialog來實現(xiàn)。實現(xiàn)日期選擇對話框和時間選擇對話框的開發(fā)分別需要使用DatePickerDialog類和TimePickerDialog類。4.6Android常用高級控件4.6.1AutoCompleteTextView控件所謂“自動完成”就是在文本框中輸入文字信息時,會顯示與之相似的關(guān)鍵字讓你來選擇。AutoCompleteTextView類繼承自EditView類,位于android.widget包下。自動完成文本框控件的外觀與圖片文本框幾乎相同,只是當用戶輸入某些文字信息時,會自動出現(xiàn)下拉菜單顯示與用戶輸入文字相關(guān)的信息,用戶直接點擊需要的文字便可自動填寫到文本控件中。4.6.2ScrollView控件滾動視圖控件ScrollView類繼承自FrameLayout類,因此,實際上它是一個幀布局,同樣位于android.widget包下。ScrollView控件是當需要顯示的信息在一個屏幕內(nèi)顯示不下時,在屏幕上會自動生成一個滾動條,以達到用戶可以對其進行滾動,顯示更多信息的目的。4.6.3Listview控件Listview類位于android.widget包下,是一種列表視圖控件,將ListAdapter所提供的各個控件顯示在一個垂直且可滾動的列表中。該類的使用方法非常簡單,只需先初始化所需要的數(shù)據(jù),然后創(chuàng)建適配器并將其設(shè)置給ListView,ListView便將信息以列表的形式顯示到頁面中。BaseAdapter是最基礎(chǔ)的Adapter類,該類實現(xiàn)了ListAdapter接口,是最實用最常用的一個類。學會BaseAdapter需要掌握getCount()、getItem()、getItemId()和getView()四個方法。getCount():要綁定的條目的數(shù)目,比如格子的數(shù)量getItem():根據(jù)一個索引(位置)獲得該位置的對象getItemId():獲取條目的idgetView():獲取該條目要顯示的界面4.6.4ProgressBar與SeekBar控件滑塊類似于聲音控制條,主要完成與用戶的簡單交互,而進度條則是需要長時間加載某些資源時用戶顯示加載進度的控件。ProgressBar類同樣位于android.widget包下,但其繼承自View,主要用于顯示一些操作的進度。應(yīng)用程序可以修改其長度表示當前后臺操作的完成情況。SeekBar繼承自ProgressBar,是用來接收用戶輸入的控件。SeekBar類似于拖動條,可以直觀地顯示用戶需要的數(shù)據(jù),常用于聲音調(diào)節(jié)等場合。RatingBar是另一種滑塊控件,一般用于星級評分的場合,其位于android.widget包下,外觀是5個星星,可以通過拖動來改變進度,除圖片形式外,還有較小的以及較大的兩種表現(xiàn)形式。4.6.5Gallery控件畫廊控件(Gallery)是Android中一種較為常見的高級控件,其效果酷炫且使用方式簡單,是設(shè)計相冊或者圖片選擇器的首選控件。Gallery組件可以橫向顯示一個圖像列表,當單擊當前圖像的后一個圖像時,這個圖像列表會向左移動一格,當單擊當前圖像的前一個圖像時,這個圖像列表會向右移動一樣,也可以通過拖動的方式來向左和向右移動圖像列表。4.6.6Toast控件Toast向用戶提供比較快速的即時消息,當Toast被顯示時,雖然其懸浮于應(yīng)用程序的最上方,但是Toast從不獲取焦點。Toast對象的創(chuàng)建是通過Toast類的靜態(tài)方法makeText()來實現(xiàn)的,該方法有兩個重載實現(xiàn),主要的不同是一個接收字符串,而另一個接收字符串的資源標識符作為參數(shù)。4.6.7Notification控件Notification是另外一種消息提示的方式,位于手機的狀態(tài)欄(StatusBar)。狀態(tài)欄位于手機屏幕的最上層,通常顯示電池電量、信號強度等信息,在Android手機中,用手指按住狀態(tài)欄并往下拉可以打開狀態(tài)欄查看系統(tǒng)的提示消息。4.6.8Spinner控件下拉列表控件(Spinner)是最常用的高級控件之一,一般用來從多個選項中選擇一個需要的,例如出生日期的選擇、居住城市的選擇等。Spinner控件位于android.widget包下,是View類的一個子類。每次只顯示用戶選中的元素,當用戶再次點擊時,會出現(xiàn)選擇列表供用戶選擇,而選擇列表中的元素同樣來自適配器。需要注意的是,Android中的下拉列表并不象其他系統(tǒng)中直接下拉顯示選項,而是相當于彈出菜單供用戶選擇。4.6.9TabHost控件選項卡(TabHost)類位于android.widget包下,是選項卡的封裝類,用于創(chuàng)建選項卡窗口。TabHost類繼承自FrameLayout,是幀布局的一種,其中可以包含多個布局,用戶可以根據(jù)自己的選擇顯示不同的界面。4.6.10GridView網(wǎng)格控件GridView(網(wǎng)格視圖控件)用于在界面上按行、列分布的方法顯示多個組件。GridView與ListView有相同的父類,因此它們具有相似的特性。它們的主要區(qū)別在于:ListView是在一個方向上分布,而GridView是在兩個方向上分布。4.7Fragment基礎(chǔ)Fragment翻譯為中文就是“碎片”的意思,它是一種嵌入到Activity中使用的UI片段。一個Activity中可以包含一個或多個Fragment,而且一個Activity可以同時展示多個Fragment。4.7.2Fragment生命周期Fragment的生命周期與Activity的生命周期類似,也具有以下幾個狀態(tài):活動狀態(tài)——當前Fragment位于前臺時,用戶可見并且可以獲取焦點。暫停狀態(tài)——其他Activity位于前臺,該Fragment仍然可見或部分可見,但不能獲取焦點。停止狀態(tài)——該Fragment不可見,失去焦點。銷毀狀態(tài)——該Fragment被完全刪除或該Fragment所在的Activity結(jié)束。4.7.3Fragment的創(chuàng)建Fragment的創(chuàng)建與Activity的創(chuàng)建類似,要創(chuàng)建一個Fragment必須要創(chuàng)建一個類繼承自Fragment。Android系統(tǒng)提供了兩個Fragment類,分別是android.app.Fragment和android.support.v4.app.Fragment。動態(tài)添加碎片主要分為如下5個步驟:(1)創(chuàng)建待添加的碎片實例。(2)獲取到FragmentManager,在活動中可以直接調(diào)用getFragmentManager()方法得到。(3)開啟一個事務(wù),通過調(diào)用beginTransaction()方法開啟。(4)向容器內(nèi)加入碎片,一般使用replace()方法實現(xiàn),需要傳入容器的id和待添加的碎片實例。(5)提交事務(wù),調(diào)用commit()方法來完成。4.7.4Fragment與Activity之間的通信1.在Activity中獲取Fragment實例為了實現(xiàn)Fragment和Activity之間的通信,F(xiàn)ragmentManager提供了一個findFragmentById()的方法,專門用于從布局文件中獲取Fragment實例的。該方法有一個參數(shù),它代表Fragment在Activty布局中的id。例如在布局文件中指定SecondFragment的id為R.id.second_fragmnet,這時就可以使用getFragmentManager().findRagmentById(R.id.second_fragmnet)方法得到SecondFragment的實例2.在Fragment中獲取Activity實例在Fragment中獲取Activity實例對象,可以通過在Fragment中調(diào)用getActivity()方法來獲取到與當前Fragment相關(guān)聯(lián)的Activity實例對象。例如在MainActivity中添加了SecondFragment,那么就可以通過在Fragment中調(diào)用getActivity()來獲取MainActivity實例對象。4.8資源管理所謂資源就是在代碼中使用的外部文件,包括圖片、音頻、動畫和字符串等。在傳統(tǒng)的程序開發(fā)過程中,需要用到很多常量、字符串等資源。在Android應(yīng)用程序中,除了res目錄外,assets目錄也用于存放資源,這兩個目錄的區(qū)別是:通常在
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024至2030年中國微電流放大器數(shù)據(jù)監(jiān)測研究報告
- 2011-2015年太子參行業(yè)市場研究與競爭力分析報告
- 2024至2030年中國客車有無人標示鎖數(shù)據(jù)監(jiān)測研究報告
- 2024至2030年中國全銅升降式防臭地漏行業(yè)投資前景及策略咨詢研究報告
- 自然科學如何撰寫和發(fā)表高水平的科研論文
- 2024年中國木醋液市場調(diào)查研究報告
- 2024年中國冰箱用石英管加熱器市場調(diào)查研究報告
- 高中語文摹形傳神千載如生第13課滑稽列傳課件蘇教版選修史記蚜
- 理發(fā)美容店租賃合同三篇
- 輪胎市場開發(fā)與步驟
- 2024新教科版一年級上冊第二單元《我們自己》第6課觀察與比較表格教學設(shè)計及反思
- 鄉(xiāng)村振興民宿產(chǎn)業(yè)項目可行性研究報告
- 【真題】2024年常州市中考物理試卷(含答案解析)
- 2024年鄉(xiāng)村農(nóng)業(yè)(農(nóng)機修理工、技師)技能知識考試題庫與答案
- 從傳統(tǒng)生產(chǎn)力到新質(zhì)生產(chǎn)力
- 河北2024年河北北方學院招聘工作人員31人筆試歷年典型考題及考點附答案解析
- 批評性話語分析綜述與前瞻
- 2024年山東省煙臺市中考數(shù)學試卷
- NB-T11092-2023水電工程深埋隧洞技術(shù)規(guī)范
- 思辨與創(chuàng)新智慧樹知到期末考試答案章節(jié)答案2024年復旦大學
- 七年級上冊歷史知識點解析
評論
0/150
提交評論