版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
Android中的UI控件4.1UI控件概念介紹4.2UI控件使用案例
4.1UI控件概念介紹
Android應(yīng)用程序開發(fā)的過程,首先就是Android界面UI的設(shè)計(jì)與對(duì)界面UI控制的過程。在Android應(yīng)用程序中,所有UI元素稱為View,它們都繼承了android.view.View類。View有眾多的子類,包括ViewGroup、基礎(chǔ)控件、高級(jí)控件和布局等。Android中控件類的擴(kuò)展結(jié)構(gòu)如圖4-1所示。圖4-1控件類擴(kuò)展結(jié)構(gòu)圖
4.1.1基礎(chǔ)控件
1.文本控件TextView
TextView控件一般用來展示文本,繼承自android.view.View類,位于android.widget包中。其常用屬性如表4-1所示。
2.編輯框控件EditText
EditText控件主要用于編輯框或輸入框,繼承自android.widget.TextView類,位于android.widget包中。其常用屬性如表4-2所示。
3.按鈕控件Button
Button控件是Android開發(fā)中最常用的按鈕控件,繼承自android.widget.TextView類,位于android.widget包中。它的常用子類有CheckBox、RadioButton、ToggleButton。其常用屬性如表4-3所示。
4.圖片控件ImageView
ImageView控件常用于顯示圖片,其圖片的來源可以是資源文件中圖片的id號(hào),也可以是Drawable對(duì)象或者位圖對(duì)象。其常用屬性如表4-4所示。
5.單選按鈕控件RadioButton
RadioButton控件,繼承自android.widget.CompoundButton類,位于android.widget包中。單選按鈕通常不單獨(dú)使用,一般在RadioGroup中聲明,用于提供兩個(gè)或多個(gè)互斥選項(xiàng),即在一組單選按鈕中只能選擇一個(gè)。要監(jiān)聽單選按鈕狀態(tài)的更改,需給它所在的RadioGroup添加setOnCheckedChangeListener()監(jiān)聽器。其常用屬性如表4-5所示。
6.復(fù)選按鈕控件CheckBox
CheckBox和Button一樣,也是一種常用的控件,它的優(yōu)點(diǎn)在于不需用戶去填寫具體的信息,只需輕輕點(diǎn)擊即可,缺點(diǎn)在于只有“是”和“否”兩種情況,但我們往往利用它的這個(gè)特性,來獲取用戶的一些信息。
7.進(jìn)度條控件ProgressBar
進(jìn)度條控件是一個(gè)很實(shí)用的組件,一般在應(yīng)用程序中用來顯示用戶某個(gè)耗時(shí)操作的進(jìn)度百分比。Android開發(fā)中的進(jìn)度條控件大致分為兩種,一種是圓形的進(jìn)度條,一種是條形的進(jìn)度條。進(jìn)度條控件常用屬性如表4-6所示。
4.1.2高級(jí)控件
Android中高級(jí)控件主要是指用作容器的幾個(gè)控件。常用的幾個(gè)高級(jí)控件都直接或者間接地繼承了android.view.ViewGroup類。常用的高級(jí)控件主要包括ListView、GridView、Spinner、AutoCompleteTextView、ExpandableListView、Gallery等。這些控件之所以稱為高級(jí)控件,是因?yàn)樗鼈兊氖褂貌幌窕A(chǔ)控件拖曳到界面上就能使用,而是需要通過適配器將某些樣式的數(shù)據(jù)或控件添加到其上才能使用。高級(jí)控件的學(xué)習(xí)不僅要了解其特有的幾個(gè)屬性,更重要的是要掌握為它們?cè)O(shè)置數(shù)據(jù)的方法,因此我們主要以案例的方式來介紹高級(jí)控件的使用。
4.2UI控件使用案例
4.2.1基礎(chǔ)控件案例1.用戶注冊(cè)案例創(chuàng)建案例之前,我們先來看看本案例的運(yùn)行結(jié)果。本案例運(yùn)行后的效果如圖4-2所示。圖4-2用戶注冊(cè)項(xiàng)目運(yùn)行界面
開始創(chuàng)建項(xiàng)目。新建一個(gè)Android項(xiàng)目,命名為baseUI,在項(xiàng)目的res文件夾下新建一個(gè)名為drawable的文件夾,將本案例中用到的兩張圖片素材復(fù)制到該文件夾中。圖片素材文件為bg.jpg、top.jpg。打開main.xml布局文件布局設(shè)置,整個(gè)界面采用垂直線性布局,界面背景設(shè)置為bg.jpg圖片,界面的上部放置一個(gè)圖片控件ImageView,數(shù)據(jù)源設(shè)置為top.jpg圖片;界面的中部放置六個(gè)橫向的線性布局,前三個(gè)橫向線性布局中各放置一個(gè)TextView控件和一個(gè)EditText控件,第四個(gè)橫向線性布局中放置一個(gè)TextView控件和一個(gè)RadioGroup控件,第五個(gè)橫向線性布局中放置一個(gè)TextView控件和三個(gè)CheckBox控件,第六個(gè)橫向線性布局中放置兩個(gè)Button控件并設(shè)置該線性布局為水平居中對(duì)齊。
部署運(yùn)行本案例,在模擬器的界面上輸入注冊(cè)信息,點(diǎn)擊注冊(cè)按鈕后,我們可以從LogCat中查看到界面上輸入的信息,如圖4-3所示。圖4-3LogCat輸出情況
2.下載文件模擬進(jìn)度案例
本案例主要學(xué)習(xí)進(jìn)度條控件的使用方法,因此我們只是利用數(shù)值來模擬下載進(jìn)度的場(chǎng)景。案例運(yùn)行后的效果如圖4-4所示。
第一個(gè)知識(shí)點(diǎn)是Android中線程的概念。當(dāng)我們部署運(yùn)行一個(gè)Android程序時(shí),一個(gè)被稱為“main”的線程就會(huì)被自動(dòng)創(chuàng)建。它被稱為主線程或者UI線程,主要負(fù)責(zé)處理應(yīng)用程序的UI事件,貫穿用戶和UI控件交互的整個(gè)過程。圖4-4模擬下載進(jìn)度界面
我們做Android開發(fā)時(shí)要盡量避免讓主線程執(zhí)行耗時(shí)的操作,例如網(wǎng)絡(luò)請(qǐng)求、數(shù)據(jù)庫查詢等操作,因?yàn)樵谥骶€程中執(zhí)行這些長時(shí)間的操作會(huì)阻塞主線程,從用戶的角度來看,好像該應(yīng)用程序出現(xiàn)了死機(jī)狀態(tài)。甚至更糟糕的是,如果UI程序被阻塞幾秒后,就會(huì)彈出程序無響應(yīng)(ANR:ApplicationNotResponding)對(duì)話框,如圖4-5所示。圖4-5ANR異常界面
第二個(gè)知識(shí)點(diǎn)是Handle機(jī)制的概念。通過前面的學(xué)習(xí)我們知道,Android應(yīng)用程序運(yùn)行的線程稱為主線程或UI線程,這個(gè)線程中不能進(jìn)行耗時(shí)的操作,否則會(huì)出現(xiàn)ANR異常,耗時(shí)操作應(yīng)該放在子線程中執(zhí)行。往往會(huì)有這樣的場(chǎng)景,一個(gè)UI界面上有一個(gè)ListView控件,ListView控件上要顯示的數(shù)據(jù)需從網(wǎng)絡(luò)上獲得,那么我們就需要把從網(wǎng)絡(luò)上獲取數(shù)據(jù)的操作放在子線程中執(zhí)行,以免出現(xiàn)ANR異常。
4.2.2高級(jí)控件案例
在創(chuàng)建案例之前,先對(duì)這幾個(gè)控件和本案例中用到的一些Android知識(shí)做個(gè)簡單介紹。這幾個(gè)控件中,ListView控件是以列表的形式顯示數(shù)據(jù)資源,Spinner是以下拉列表的形式顯示數(shù)據(jù)資源,GridView是以網(wǎng)格的形式顯示數(shù)據(jù)資源,Gallery是以縮略圖的方式顯示圖片資源,前三個(gè)控件用得比較多,Gallery控件已經(jīng)被水平的ScrollView和ViewPicker取代,用得不是很多。每個(gè)控件都借助數(shù)據(jù)適配器Adapter對(duì)象對(duì)顯示數(shù)據(jù)進(jìn)行加載,每個(gè)控件都能響應(yīng)用戶點(diǎn)擊的兩個(gè)事件,一是對(duì)控件中條目的單擊事件,另一個(gè)是對(duì)控件中條目的長按事件。
兩個(gè)觸發(fā)事件都是通過給控件添加監(jiān)聽來實(shí)現(xiàn)的,具體實(shí)現(xiàn)如下:
(1)用戶單擊控件條目事件。為控件加載setOnItemClickListener監(jiān)聽,重寫onItemClick()方法。
(2)用戶長按事件。為控件加載setOnItemLongClickListener監(jiān)聽,重寫onItemLongClick()方法。
要用好上述所說的高級(jí)控件,一定要理解“適配器”的概念,這兩個(gè)控件都是通過適配器將要顯示的數(shù)據(jù)映射到控件上的。適配器是一個(gè)連接數(shù)據(jù)和AdapterView的橋梁,ListView和GridView就是典型的AdapterView控件,后面還會(huì)學(xué)習(xí)其他的AdapterView,通過適配器能有效地實(shí)現(xiàn)數(shù)據(jù)與AdapterView的分離設(shè)置,使AdapterView與數(shù)據(jù)的綁定更加簡便,修改更加方便。Android中提供了很多的Adapter,表4-7列出了常用的幾個(gè)。
1.ListView使用ArrayAdapter適配器
分析一下使用的步驟。
(1)定義一個(gè)數(shù)組來存放ListView中item的內(nèi)容。
(2)通過實(shí)現(xiàn)ArrayAdapter的構(gòu)造函數(shù)來創(chuàng)建一個(gè)ArrayAdapter的對(duì)象。
(3)通過ListView的setAdapter()方法綁定ArrayAdapter。
2.ListView使用BaseAdapter適配器
使用BaseAdapter必須寫一個(gè)類繼承它,同時(shí)BaseAdapter是一個(gè)抽象類,繼承它必須實(shí)現(xiàn)它的方法。BaseAdapter的靈活性就在于它要重寫四個(gè)方法:getCount()、getItem(intposition)、getItemId(intposition)、getView(),其中最重要的為getView()方法。getView()方法返回每個(gè)條目項(xiàng)所顯示的View。
第一個(gè)概念就是Activity的概念。Activity在Android中主要是來做應(yīng)用程序的界面,應(yīng)用程序有幾個(gè)界面,我們就得定義幾個(gè)Activity,每一個(gè)Activity必須在AndroidManifest.xml文件中注冊(cè),同時(shí)Activity類還為我們準(zhǔn)備了啟動(dòng)另外一個(gè)Activity的方法startActivity(),傳入該方法的參數(shù)不同,則啟動(dòng)的Activity不同。
第二個(gè)概念就是Intent的概念。Intent的中文意思是“意圖”,負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。Intent不僅可用于應(yīng)用程序之間,也可用于應(yīng)用程序內(nèi)部的Activity/Service之間的交互。因此,startActivity()方法的參數(shù)就是intent。
具體用法如下:
Intent
intent
=
new
Intent(源界面名,目標(biāo)界面名);
startActivity(intent);
本項(xiàng)目有多個(gè)應(yīng)用程序界面,我們先來完成第一個(gè)界面。第一個(gè)界面是應(yīng)用程序的主界面,效果如圖4-6所示。該界面由一個(gè)GridView控件構(gòu)成,在此界面上可以通過點(diǎn)擊GridView控件的每一個(gè)條目跳轉(zhuǎn)到另外一個(gè)界面。圖4-6GridView界面
開始創(chuàng)建項(xiàng)目。新建一個(gè)Android項(xiàng)目,命名為advance,在項(xiàng)目的res文件夾下新建一個(gè)名為drawable的文件夾,將本案例中用到的16張圖片素材復(fù)制到該文件夾中。圖片素材名稱為label01.png~label16.png。打開main.xml布局文件,向main.xml文件中拖入一個(gè)GridView控件。設(shè)置其屬性如下:
屬性設(shè)置說明:GridView控件以網(wǎng)格的形式顯示數(shù)據(jù)資源,因此必須指定一行顯示多少個(gè)網(wǎng)格,每個(gè)網(wǎng)格以怎樣的方式顯示。android:numColumns="4"用于設(shè)置GridView控件每行顯示四個(gè)網(wǎng)格,而每個(gè)網(wǎng)格中如何顯示必須再新建一個(gè)布局文件來說明。
主要代碼解釋:
(1)?Viewview=View.inflate(MainActivity.this,R.layout.gv_item,null);方法的作用是將一個(gè)布局文件轉(zhuǎn)換為一個(gè)View對(duì)象,其中第一個(gè)參數(shù)是上下文,第二個(gè)參數(shù)是要轉(zhuǎn)換的布局文件,第三個(gè)參數(shù)是指定父窗體。
(2)?publicvoidonItemClick(AdapterView<?>parent,Viewview, intposition,longid){}是GridView控件中每個(gè)條目被點(diǎn)擊后觸發(fā)的方法,其中第三個(gè)參數(shù)position是點(diǎn)擊條目的位置。
部署運(yùn)行項(xiàng)目,點(diǎn)擊GridView的第一個(gè)條目,跳轉(zhuǎn)到ListView控件的顯示界面,如圖4-7所示。圖4-7ListView顯示界面
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年模具行業(yè)產(chǎn)學(xué)研合作項(xiàng)目合同4篇
- 通風(fēng)和防排煙課程設(shè)計(jì)
- 觀察日記課程設(shè)計(jì)
- 二零二五年度面料印刷與包裝服務(wù)合同4篇
- 2025年度魚塘承包與漁業(yè)產(chǎn)業(yè)發(fā)展規(guī)劃合作協(xié)議4篇
- 二零二五版公司在職分紅與員工職業(yè)規(guī)劃協(xié)議3篇
- 二零二五年度高端酒店管理咨詢合同4篇
- 自動(dòng)化儀表課課程設(shè)計(jì)
- 二零二五版建筑廢棄物資源化利用建設(shè)工程擔(dān)保服務(wù)合同3篇
- 2024版輕鋼房屋建造協(xié)議模板協(xié)議版B版
- 《工貿(mào)企業(yè)有限空間作業(yè)安全規(guī)定》知識(shí)培訓(xùn)
- 高層次人才座談會(huì)發(fā)言稿
- 垃圾清運(yùn)公司管理制度(人員、車輛、質(zhì)量監(jiān)督、會(huì)計(jì)管理制度)
- 《建筑工程設(shè)計(jì)文件編制深度規(guī)定》(2022年版)
- 營銷人員薪酬考核方案
- 2024年版的企業(yè)績效評(píng)價(jià)標(biāo)準(zhǔn)
- 2024至2030年中國it外包服務(wù)行業(yè)市場(chǎng)深度分析及發(fā)展趨勢(shì)預(yù)測(cè)報(bào)告
- 工程項(xiàng)目計(jì)價(jià)結(jié)算付款情況統(tǒng)計(jì)表
- GB/T 20554-2024海帶
- 廣東廣州中醫(yī)藥大學(xué)第一附屬醫(yī)院招聘筆試真題2022
- ISO 15189醫(yī)學(xué)實(shí)驗(yàn)室認(rèn)可內(nèi)審員培訓(xùn)試題附答案
評(píng)論
0/150
提交評(píng)論