Android應(yīng)用程序設(shè)計(jì)(邵奇峰 李勇軍)全套教案課件_第1頁(yè)
Android應(yīng)用程序設(shè)計(jì)(邵奇峰 李勇軍)全套教案課件_第2頁(yè)
Android應(yīng)用程序設(shè)計(jì)(邵奇峰 李勇軍)全套教案課件_第3頁(yè)
Android應(yīng)用程序設(shè)計(jì)(邵奇峰 李勇軍)全套教案課件_第4頁(yè)
Android應(yīng)用程序設(shè)計(jì)(邵奇峰 李勇軍)全套教案課件_第5頁(yè)
已閱讀5頁(yè),還剩321頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

Android應(yīng)用程序設(shè)計(jì)(邵奇峰李勇軍)第1章

Android開發(fā)基礎(chǔ).ppt第2章

Android系統(tǒng)架構(gòu)及應(yīng)用程序結(jié)構(gòu).ppt第3章

Android界面基礎(chǔ).ppt第4章

基本用戶界面.ppt第5章

高級(jí)用戶界面.ppt第6章

數(shù)據(jù)存儲(chǔ).ppt第7章

BroadcastReceiver與Service.ppt第8章

Handler與AsyncTask.ppt第9章

定位與地圖.ppt第10章

應(yīng)用調(diào)試與發(fā)布.ppt第11章

綜合應(yīng)用設(shè)計(jì)與開發(fā).ppt全套可編輯PPT幻燈片課件(共11章)第1章Android開發(fā)基礎(chǔ)本章內(nèi)容Android簡(jiǎn)介發(fā)展歷史Android的特點(diǎn)開發(fā)環(huán)境的搭建下載和安裝JRE下載和安裝AndroidSDK和ADT管理SDK和AVD創(chuàng)建第一個(gè)Android應(yīng)用程序Android簡(jiǎn)介Android一詞的本義指“機(jī)器人”,同時(shí)也是Google于2007年11月5日宣布的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)的名稱,該平臺(tái)由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。發(fā)展歷史Android1.1Robot(機(jī)器人)Android1.5Cupcake(紙杯蛋糕)

Android1.6Donut(甜甜圈)Android2.0/2.0.1/2.1Eclair(松餅)

Android2.2/2.2.1Froyo(凍酸奶)Android2.3Gingerbread(姜餅)Android3.0Honeycomb(蜂巢)Android4.0IceCreamSandwich(冰激凌三明治)

Android4.1JellyBean(果凍豆)Android4.2JellyBean(果凍豆)Android5.0/LLollipop(棒棒糖)Android的特點(diǎn)開放性掙脫運(yùn)營(yíng)商的束縛豐富的硬件選擇不受任何限制的開發(fā)商無(wú)縫結(jié)合的Google應(yīng)用開發(fā)環(huán)境的搭建Android應(yīng)用程序是由JAVA語(yǔ)言開發(fā)的。Google公司在2013年的I/O大會(huì)上發(fā)布了AndroidStudio——專為Android應(yīng)用開發(fā)而設(shè)計(jì)的開發(fā)環(huán)境。該工具的開發(fā)環(huán)境和模式更加的豐富和便捷,能夠支持多種語(yǔ)音,還可以為開發(fā)者提供測(cè)試工具和各種數(shù)據(jù)分析。下載和安裝JRE在下載和安裝Eclipse之前,必須確保在電腦上下載并安裝了JavaRuntimeEnvironment(JRE,Java運(yùn)行時(shí)環(huán)境)。因?yàn)镋clipse作為一個(gè)程序是由Java語(yǔ)言寫成,它要求JRE來運(yùn)行。如果JRE沒有安裝或被檢測(cè)到,打開Eclipse時(shí)會(huì)看見錯(cuò)誤提示。下載和安裝AndroidSDK和ADT原先搭建Android開發(fā)環(huán)境時(shí),需要分別下載Eclipse、AndroidSDK和ADT(AndroidDeveloperTools),現(xiàn)在,Google已經(jīng)將三者集成在了一起,無(wú)需再分別下載配置了。管理SDK和AVD下載的集成開發(fā)環(huán)境中,只包含最新版本的AndroidSDK(目前為4.2版),如果要開發(fā)其它版本的Android應(yīng)用程序還需通過“AndroidSDKManager”程序聯(lián)網(wǎng)下載。同時(shí),應(yīng)用程序的調(diào)試需要虛擬機(jī)(AVD——AndroidVirtualDevice)來運(yùn)行,因此,開發(fā)者必須掌握“AndroidVirtualDeviceManager”程序的使用。Android虛擬機(jī)(AVD)創(chuàng)建第一個(gè)Android應(yīng)用程序小結(jié)本章主要對(duì)Android應(yīng)用開發(fā)的前期工作進(jìn)行了介紹,即Android開發(fā)工具的準(zhǔn)備、環(huán)境的搭建及配置,最后為了測(cè)試環(huán)境安裝是否正確,寫出了一個(gè)最經(jīng)典的HelloAndroid程序。本章是Android應(yīng)用開發(fā)的基礎(chǔ),下面將正式對(duì)Android進(jìn)行系統(tǒng)學(xué)習(xí)。第2章Android系統(tǒng)架構(gòu)及應(yīng)用程序結(jié)構(gòu)本章內(nèi)容Android系統(tǒng)構(gòu)架Android的應(yīng)用程序框架Android項(xiàng)目的目錄結(jié)構(gòu)AndroidManifest.xml文件的結(jié)構(gòu)Android應(yīng)用程序中的資源Android應(yīng)用程序組件ActivityServiceBroadcastReceiverContentProviderAndroid系統(tǒng)構(gòu)架Android的應(yīng)用程序框架android.app:提供高層的程序模型和基本的運(yùn)行環(huán)境。android.appwidget:包含了創(chuàng)建Widget的相關(guān)類,Widget可以放在Android的桌面上。android.bluetooth:提供了操作藍(lán)牙設(shè)備的相關(guān)類。android.content:提供了對(duì)各種設(shè)備上的數(shù)據(jù)進(jìn)行訪問和發(fā)布的相關(guān)類和接口。android.database:提供了操作數(shù)據(jù)庫(kù)的相關(guān)類和接口。android.gesture:提供了手勢(shì)操作的相關(guān)類和接口。android.graphics:底層的圖形庫(kù)。主要包括畫布、顏色過濾、點(diǎn)、矩形,可以將它們直接繪制到屏幕上。android.hardware:操作硬件的庫(kù)。由于不同的手機(jī)硬件不同,因此,這些庫(kù)在不同的手機(jī)上不一定有效。android.inputmethodservice:編寫基于Android的輸入法程序。Android的應(yīng)用程序框架android.location:提供了與定位和相關(guān)服務(wù)的類和接口。android.media:提供了與管理音頻和視頻相關(guān)的類和接口。:提供了與網(wǎng)絡(luò)訪問相關(guān)的類和接口。android.opengl:提供OpenGL的工具。android.os:提供了系統(tǒng)服務(wù)、消息傳輸和IPC機(jī)制。vider:提供了與訪問Android內(nèi)容提供者相關(guān)的類和接口。android.sax:用于訪問XML。android.speech:用于文本轉(zhuǎn)語(yǔ)音的庫(kù)(TextToSpeech)。android.telephony:提供與撥打電話相關(guān)的交互操作。android.test:用于測(cè)試Android應(yīng)用程序的框架。android.util:—些實(shí)用的工具,例如處理時(shí)間的類。Android.view:提供基礎(chǔ)的用戶界面接口框架。android.webkit:默認(rèn)的瀏覽器操作接口。android.widget:包括了AndroidSDK提供的大部分UI控件。Android項(xiàng)目的目錄結(jié)構(gòu)AndroidManifest.xml文件的結(jié)構(gòu)定義應(yīng)用程序的Java包。定義4個(gè)應(yīng)用程序組件。通過Andr0idManifeSt.Xml文件中的配置信息可以讓Android系統(tǒng)知道如何處理這些應(yīng)用程序組件。確定哪一個(gè)Activity將作為第一個(gè)運(yùn)行的Activity(也就是MainActivity)。在默認(rèn)情況下,Android系統(tǒng)會(huì)限制應(yīng)用程序使用某些API,因此,需要在AndroidManifest.xml文件中為這些API授權(quán)后才可以使用它們??梢允跈?quán)與其它的應(yīng)用程序組件進(jìn)行交互??梢栽贏ndroidManifest.xml文件中配置一些特殊的類,這些類可以在應(yīng)用程序運(yùn)行時(shí)提供調(diào)試及其他的信息。定義了Android應(yīng)用程序所需要的最小API級(jí)別。指定應(yīng)用程序中引用的程序庫(kù)。Android應(yīng)用程序中的資源資源種類所在目錄描述動(dòng)畫(Animation)幀(Frame)動(dòng)畫:res/drawable補(bǔ)間(Tween)動(dòng)畫:res/anim定義動(dòng)畫文件顏色狀態(tài)列表(ColorStateList)res/color定義根據(jù)視圖(View)狀態(tài)變化的顏色資源可拉伸圖像(Drawable)res/drawable使用Android所支持的圖像格式或XML文件定義不同的格式布局(Layout)res/layout定義描述應(yīng)用程序UI的布局菜單(Menu)res/menu定義應(yīng)用程序菜單的內(nèi)容字符串(String)res/values定義字符串,可以通過R.string訪問相應(yīng)的資源顏色(Color)res/values定義顏色值,可以通過R.color訪問相應(yīng)的資游尺度(Dimen)res/values定義寬度、髙度、位置等尺度信息,可以通過

R.dimen訪問相應(yīng)的資源風(fēng)格(Style)res/values定義UI元素的格式和外觀??赏ㄟ^R.style類訪問相應(yīng)的資源XMLTes/xml基于XML格式的資源。例如,PreferenceActivity使用的描述配置界面的資源文件RAWres/raw保存任意二進(jìn)制文件。保存在該目錄中的文件未被壓縮,因此可通過InputStream從apk文件提取出來直接使用ASSETSassets保存任意二進(jìn)制文件。該目錄與res/raw目錄類似。但在res/raw目錄中不能建立子目錄,而在assets目錄中可以建立任意層次的子目錄(目錄的層次只受操作系統(tǒng)的限制)Android應(yīng)用程序組件Android平臺(tái)有四大程序組件,分別是Activity、Service、BroadcastReceiver和ContentRrovider。應(yīng)用程序?qū)ν夤蚕砉δ芤话阋彩峭ㄟ^這四種應(yīng)用程序組件實(shí)現(xiàn)的。ActivityActivity是Android的核心類,該類的全名是android.app.Activity。Activity相當(dāng)于C/S程序中的窗體(Form)或Web程序的頁(yè)面。每一個(gè)Activity提供了一個(gè)可視化的區(qū)域。在這個(gè)區(qū)域可以放置各種Android控件,例如,按鈕、圖像、文本框等。Service服務(wù)沒有可視化界面,其主要在后臺(tái)運(yùn)行。例如,當(dāng)用戶進(jìn)行其他操作時(shí),可以利用服務(wù)在后臺(tái)播放音樂,或者當(dāng)來電時(shí),可以利用服務(wù)同時(shí)進(jìn)行其它操作。服務(wù)類必須從android.app.Service繼承。BroadcastReceiver廣播接收器組件的唯一功能就是接收廣播動(dòng)作,以及對(duì)廣播動(dòng)作做出響應(yīng)。有很多時(shí)候,廣播動(dòng)作是由系統(tǒng)發(fā)出的,例如,時(shí)區(qū)的變化、電池電量不足、新到短信等。除此之外,應(yīng)用程序還可以發(fā)送廣播動(dòng)作,例如,通知其它的程序數(shù)據(jù)己經(jīng)下載完畢,并且這些數(shù)據(jù)己經(jīng)可以使用了。ContentProvider內(nèi)容提供者可以為其它應(yīng)用程序提供數(shù)據(jù)。這些數(shù)據(jù)可以保存在數(shù)據(jù)庫(kù)或文件系統(tǒng)中,例如,SQLite數(shù)據(jù)庫(kù)或任何其它格式的文件。每一個(gè)內(nèi)容提供者是一個(gè)類,這些類都需要從android.content.ContentProvider類繼承。小結(jié)本章主要介紹了Android應(yīng)用程序的框架、資源及應(yīng)用程序組件。雖然Android工程的目錄結(jié)構(gòu)較復(fù)雜,但并不需要我們手工去建立。如果使用ADT來建立工程,會(huì)自動(dòng)生成一個(gè)默認(rèn)的目錄結(jié)構(gòu)。當(dāng)然,我們可以根據(jù)需要對(duì)這個(gè)默認(rèn)生成的目錄結(jié)構(gòu)進(jìn)行修改。在Android應(yīng)用程序中包含了大量的資源。這些資源主要保存在res目錄的子目錄中,在生成apk文件時(shí)會(huì)將這些資源一起打包到apk文件中。Android應(yīng)用程序包含了四大應(yīng)用程序組件:Activity、Service、BroadcastReceiver和ContentProvider,通過這四種應(yīng)用程序組件可以實(shí)現(xiàn)各種類型的Android應(yīng)用程序。因此,一定要認(rèn)真掌握這四種應(yīng)用程序組件的使用方法,因?yàn)樗鼈兪茿ndroid應(yīng)用程序的基石。第3章AndroidUI基礎(chǔ)本章內(nèi)容Android界面顯示XML布局代碼布局混合方式自定義ViewAndroid界面布局線性布局表格布局幀布局相對(duì)布局網(wǎng)格布局用戶界面顯示用戶界面的設(shè)計(jì)分為兩種實(shí)現(xiàn)方式,一種是像設(shè)計(jì)網(wǎng)頁(yè)時(shí)采用類似XML的HTML來描述想要的頁(yè)面效果,而不是怎樣達(dá)到這種效果;另一種是單一的采用代碼的方式進(jìn)行用戶界面的設(shè)計(jì),Android系統(tǒng)在聲明界面布局上提供了很好的靈活性,用戶既可獨(dú)立使用任何一種聲明界面布局方式,也可以同時(shí)使用兩種方式。XML布局使用XML文件聲明界面布局主要有兩個(gè)關(guān)鍵步驟:(1)在已建好的Android應(yīng)用程序的res\layout目錄下編寫XML布局文件,XML文件命名規(guī)則同Java的命名規(guī)則,如main1。創(chuàng)建后,R.java會(huì)自動(dòng)收錄并生成該布局資源的ID;(2)在Activity中使用setContentView(R.layout.main1)代碼來顯示XML文件中布局的內(nèi)容。XML布局文件控制用戶界面在Eclipse中創(chuàng)建一Android應(yīng)用程序,名稱為XML_Layout,包名稱是.zzti.xml_layout,Activity名稱為MainActivity,使用XML布局文件實(shí)現(xiàn)某一應(yīng)用程序的歡迎界面。項(xiàng)目XML_Layout的界面如圖3-1所示。圖3-1

XML布局修改新建項(xiàng)目

<FrameLayoutxmlns:android="/apk/res/android"xmlns:tools="/tools"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hello_world"/></FrameLayout>代碼布局在代碼中實(shí)現(xiàn)用戶界面顯示,主要有三個(gè)步驟:(1)創(chuàng)建布局管理器。可以是幀布局管理器、表格布局管理器、線性布局管理器和相對(duì)布局管理器等。布局管理器詳見3.2節(jié).(2)創(chuàng)建具體的組件,如TextView、ImageView、Button等任何Android提供的組件,并且設(shè)置組件的布局和各種屬性。組件詳見第4章。(3)將創(chuàng)建的具體組件添加到布局管理器中。代碼在Eclipse中創(chuàng)建Android應(yīng)用程序,名稱為Java_Layout,包名稱是.zzti.java_layout,Activity名稱為MainActivity,使用Java代碼的方式實(shí)現(xiàn)圖3-1效果。1.在Java_Layout項(xiàng)目中,打開com\example\java_layout目錄下的MainActivity.java文件,然后將默認(rèn)生成的setContentView(R.layout.activity_main)代碼刪除;2.在MainActivity的onCreate()方法中,創(chuàng)建一個(gè)幀布局管理器,并在Activity中進(jìn)行顯示,關(guān)鍵代碼如下:

FrameLayoutframeLayout=newFrameLayout(this);setContentView(frameLayout);//設(shè)置在Activity中顯示frameLayout代碼3.創(chuàng)建一個(gè)TextView組件textView1,設(shè)置其顯示文字和布局,并將其添加到布局管理器中,具體代碼如下:TextViewtextView1=newTextView(this);//創(chuàng)建TextView對(duì)象textView1.setText("歡迎使用XX應(yīng)用軟件");//設(shè)置顯示的文字frameLayout.addView(textView1);//將textView1添加到布局管理器中運(yùn)行本實(shí)例,即可顯示出圖3-1效果?;旌戏绞酵耆褂肵ML布局文件進(jìn)行用戶界面顯示,實(shí)現(xiàn)比較方便快捷,但有失靈活;而完全通過Java代碼進(jìn)行用戶界面顯示,雖然比較靈活,但開發(fā)過程比較繁瑣。鑒于這兩種方法的優(yōu)缺點(diǎn),使用XML和Java代碼混合形式實(shí)現(xiàn)用戶界面顯示,習(xí)慣上把變化小、行為相對(duì)比較固定的組件放在XML布局文件中,而把變化較大、行為控制比較復(fù)雜的組件由Java代碼來管理。實(shí)例分析<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"android:id="@+id/layout"></LinearLayout>實(shí)例分析1.在MainActivity中,聲明text和textView兩個(gè)私有的成員變量,用于保存TextView組件上需要顯示的文本內(nèi)容;用于保存TextView組件。主要代碼如下:privateString[]text={"Android應(yīng)用程序開發(fā)","PHP應(yīng)用程序開發(fā)","C++程序開發(fā)","Java應(yīng)用程序開發(fā)"};privateTextView[]textView=newTextView[text.length];2.在MainActivity的onCreate()方法中,先獲取在XML布局文件中創(chuàng)建的線性布局管理器,然后通過一個(gè)for循環(huán)創(chuàng)建4個(gè)顯示文本的TextView組件,并將其添加到布局管理器中。關(guān)鍵代碼如下:

LinearLayoutlayout=(LinearLayout)this.findViewById(R.id.layout);for(inti=0;i<textView.length;i++){textView[i]=newTextView(this);//創(chuàng)建一TextView組件

textView[i].setText(text[i]);//設(shè)置TextView組件顯示的文本

layout.addView(textView[i]);//將TextView組件添加到布局管理器中}實(shí)例分析

圖3-2在窗體中豎向顯示4門編程課程名字自定義View前面已經(jīng)提到,在Android中所有的UI界面都是由View類和ViewGroup類及其子類組合而成的。一般情況下,開發(fā)Android應(yīng)用程序的UI界面,都不直接使用View和ViewGroup類,而是使用它們的子類。雖然Android提供了很多繼承了View的UI組件,但在實(shí)際開發(fā)中,還會(huì)出現(xiàn)不能滿足程序需要的情況,這時(shí)用戶可通過繼承View類來開發(fā)自己的組件。開發(fā)自定義的View組件主要分為3個(gè)步驟:(1)創(chuàng)建一個(gè)繼承android.view.View類的View類,并且重寫構(gòu)造方法;(2)根據(jù)需要重寫相應(yīng)的方法;(3)在項(xiàng)目的Activity中,創(chuàng)建并實(shí)例化自定義View類,并將其添加到布局管理器中。實(shí)例分析:開發(fā)自定義的View組件<FrameLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/back"android:id="@+id/layout”></FrameLayout>開發(fā)自定義的View組件publicfloatbitmapX;//心形顯示位置的X坐標(biāo)

publicfloatbitmapY;//心形顯示位置的Y坐標(biāo)

publicHeartView(Contextcontext){ super(context); bitmapX=50;//初始X位置

bitmapY=100;//初始Y位置

} protectedvoidonDraw(Canvascanvas) { super.onDraw(canvas); Paintpaint=newPaint();//創(chuàng)建并實(shí)例化Paint對(duì)象

//根據(jù)圖片生成位圖對(duì)象

Bitmapbitmap=BitmapFactory.decodeResource(this.getResources(),R.drawable.heart);//繪制心形

canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint); if(bitmap.isRecycled())//判斷圖片是否回收

bitmap.recycle();//強(qiáng)制回收?qǐng)D片 }開發(fā)自定義的View組件在MainActivity的onCreate()方法中,首先獲取幀布局管理器并實(shí)例化心形對(duì)象heart,然后為heart添加觸摸事件監(jiān)聽器,在重寫的觸摸事件中設(shè)置heart的顯示位置并重繪heart組件,最后將heart添加到布局管理器中,關(guān)鍵代碼如下:

FrameLayoutframeLayout=(FrameLayout)this.findViewById(R.id.layout);

//創(chuàng)建并實(shí)例化HeartView對(duì)象

finalHeartViewheart=newHeartView(MainActivity.this);

//為心形添加觸摸事件監(jiān)聽器

heart.setOnTouchListener(newOnTouchListener(){

publicbooleanonTouch(Viewv,MotionEventevent)

{

heart.bitmapX=event.getX();//設(shè)置X坐標(biāo)

heart.bitmapY=event.getY();//設(shè)置Y坐標(biāo)

heart.invalidate();//重繪heart組件

returntrue;

}

});frameLayout.addView(heart);//將heart添加到布局管理器中開發(fā)自定義的View組件將顯示如圖3-3所示的運(yùn)行結(jié)果。當(dāng)手指在屏幕上拖動(dòng)時(shí),心形將跟隨手指的拖動(dòng)軌跡而移動(dòng)。

圖3-3跟隨手指的心形Android界面布局界面布局(layout)是用戶界面結(jié)構(gòu)的描述,定義界面中所有的元素、結(jié)構(gòu)和相互關(guān)系。Android中提供的主要有線性布局、表格布局、幀布局、相對(duì)布局、絕對(duì)布局和網(wǎng)格布局(AndroidSDK4.0新增)等,而對(duì)于絕對(duì)布局,由于在Android2.0中已被標(biāo)記為過期,所以不再進(jìn)行講解。

線性布局線性布局(LinearLayout)是一種重要的界面布局,也是經(jīng)常使用的界面布局。在線性布局中,所有的子元素都按照垂直或水平的順序在界面上排列。如果垂直排列,則每行僅包含一個(gè)界面元素;如果水平排列,則每列僅包含一個(gè)界面元素。圖3-4分別是垂直排列和水平排列的線性布局示例。(a)垂直排列(b)水平排列

圖3-4垂直排列和水平排列的線性布局線性布局圖3-5界面可視化編輯器線性布局

<Buttonandroid:text="@string/login"android:layout_width="wrap_content"android:layout_height="wrap_content"/><Buttonandroid:text="@string/register"android:layout_width="wrap_content"android:layout_height="wrap_content"/>線性布局圖3-6界面可視化編輯器圖3-7XML編輯器線性布局實(shí)現(xiàn)圖3-4(b)的過程與上述過程非常相似,只需要修改以下幾點(diǎn)即可:(1)建立名為main_horizontal的XML文件;(2)將線性布局的orientation屬性值設(shè)置為horizontal;(3)將MainActivity文件中的setContentView(R.layout.main_vertical)更改為setContentView(R.layout.main_horizontal)。main_horizontal.xml文件內(nèi)容此處不再詳述。表格布局表格布局(TableLayout)也是一種常用的界面布局,它將屏幕劃分為表格,表格由列和行組成許多的單元格,表格布局將子元素的位置分配到行或列中,行、列或單元格的邊框線不會(huì)顯示。一個(gè)表格布局由許多的TableRow組成,每一行擁有0個(gè)或多個(gè)單元格,每個(gè)單元格擁有一個(gè)View對(duì)象。在表格布局中,列可以被隱藏,也可以被設(shè)置為伸展的,從而填充可利用的屏幕空間,還可以設(shè)置為強(qiáng)制收縮,直到表格匹配屏幕大小。表格布局還支持嵌套,可將另一個(gè)表格布局放置在前一個(gè)表格布局的網(wǎng)格中,也可以在表格布局中添加其他界面布局,如線性布局、相對(duì)布局等。表格布局圖3-8表格布局表格布局<TableLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent">

<TableRow

android:layout_width="wrap_content"android:layout_height="wrap_content"><TextView android:layout_width="15pt" android:layout_height="wrap_content"

android:text="@string/seven"/><TextView android:layout_width="15pt" android:layout_height="wrap_content" android:text="@string/eight"/>

表格布局

<TextView android:layout_width="15pt" android:layout_height="wrap_content" android:text="@string/nine"/></TableRow><TableRow......

代碼見課本P26

幀布局幀布局(FrameLayout)是最簡(jiǎn)單的界面布局,用來存放一個(gè)元素的空白空間,且子元素的位置是不能夠指定的,只能夠放置在空白空間的左上角。如果有多個(gè)子元素,后放置的子元素將覆蓋填充先放置的子元素,把它們部分或全部擋住(除非后一個(gè)子元素是透明的)。圖3-9是一個(gè)幀布局的效果,最底層是一個(gè)具有黑色背景的TextView,隨后其上有一個(gè)Button按鈕,背景色為白色,最上方是一個(gè)具有透明效果的TextView。

幀布局<FrameLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="300dip"android:layout_height="200dip"android:background="#000000"/> <TextViewandroid:layout_width="200dip"android:layout_height="150dip"android:background="#0000ff"/>......見課本P27相對(duì)布局相對(duì)布局(RelativeLayout)是指按照組件之間的相對(duì)位置來進(jìn)行布局,如某個(gè)組件在另一個(gè)組件的左邊、右邊、上方或下方等。也即是說相對(duì)布局允許子元素指定它們相對(duì)于其他元素或父元素的位置,如第一個(gè)元素在屏幕的中央,那么相對(duì)于這個(gè)元素的其他元素將以屏幕中央的相對(duì)位置來排列。相對(duì)布局圖3-10相對(duì)布局相對(duì)布局<RelativeLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:id="@+id/textView1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/info"android:layout_centerInParent="true"/><Buttonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_below="@id/textView1"android:layout_toLeftOf="@+id/button"android:text="@string/yes"/>.......代碼見課本P29

網(wǎng)格布局網(wǎng)格布局(GridLayout)是將用戶界面劃分為網(wǎng)格,界面元素可隨意擺放在這些網(wǎng)格中。網(wǎng)格布局比表格布局在界面設(shè)計(jì)上更加靈活,在網(wǎng)格布局中元素可以占用多個(gè)網(wǎng)格,而在表格中則無(wú)法實(shí)現(xiàn),只能將元素指定在一個(gè)表格行中。圖3-11是網(wǎng)格布局的一個(gè)示例,(a)是在Eclipse界面設(shè)計(jì)器中的界面圖示,(b)是在Android模擬器運(yùn)行后的效果。網(wǎng)格布局效果圖:(a)設(shè)計(jì)圖

(b)效果圖網(wǎng)格布局<GridLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:columnCount="3"android:useDefaultMargins="true"><TextViewandroid:layout_columnSpan="3"android:layout_gravity="left"android:text="@string/info"/> <Buttonandroid:layout_column="0"android:layout_gravity="fill_horizontal"代碼見課本P30

小結(jié)本章介紹了用戶界面顯示的基礎(chǔ)內(nèi)容,主要包括Android中進(jìn)行用戶界面顯示的4種方法及常用的5種布局方式。用戶界面顯示的4種方法各有優(yōu)缺點(diǎn),應(yīng)根據(jù)實(shí)際需要進(jìn)行合適的選擇。隨后介紹的5種布局方式,需要讀者重點(diǎn)掌握,在實(shí)際編程中靈活運(yùn)用。第4章基本用戶界面本章內(nèi)容基本組件文本框及編輯器按鈕單選按鈕及復(fù)選按鈕圖像視圖列表選項(xiàng)框列表視圖事件處理鍵盤事件觸摸事件手勢(shì)Intent的使用小結(jié)基本組件系統(tǒng)組件是Android系統(tǒng)中已經(jīng)封裝的界面組件,是應(yīng)用程序開發(fā)過程中最常見的功能組件。系統(tǒng)組件更有利于進(jìn)行快速開發(fā),同時(shí)能夠使Android應(yīng)用程序的界面保持一定的一致性。組件常見屬性屬性說明android:layout_width設(shè)置組件的寬度android:layout_height設(shè)置組件的高度android:background設(shè)置組件的背景android:id設(shè)置組件的ID文本框及編輯器Android中提供了兩種文本組件:一種是文本框(TextView),用于顯示字符,;另一種是編輯框(EditText),用來輸入和編輯字符。在Android中,我們?nèi)绾螌?shí)現(xiàn)用戶注冊(cè)界面的實(shí)現(xiàn),也即圖4-1所示界面。圖4-1

TextView與EditText混合使用TextView與EditText的混合使用<TableLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"> <TableRow android:layout_width="wrap_content" android:layout_height="wrap_content"> <TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/name"/> <EditText android:layout_width="200dp" android:layout_height="wrap_content" android:inputType="textPersonName" android:singleLine="true"/>

按鈕Android中提供了普通按鈕(Button)和圖像按鈕(ImageButton)兩種組件,用戶可在該組件上單擊,將會(huì)觸發(fā)一個(gè)onClick事件,可通過為按鈕添加單擊事件監(jiān)聽器指定所要觸發(fā)的動(dòng)作。圖像按鈕和普通按鈕使用方法基本相同,除標(biāo)記不同外,圖像按鈕需為其指定android:src屬性,也即其按鈕上顯示的是圖像。按鈕的應(yīng)用方式初始情況下文本框中顯示內(nèi)容如圖4-2中(a)所示“我是一個(gè)文本框,試著點(diǎn)下Button按鈕,或按鈕下的圖片,觀察我的變化呀!”;當(dāng)單擊Button按鈕時(shí),則其內(nèi)容更改為“你單擊了Button按鈕”,字號(hào)變大,如圖4-2中(b)所示;若單擊下方的ImageButton圖標(biāo),則其內(nèi)容更改為“你單擊了ImageButton按鈕”、字號(hào)相對(duì)變小,背景顏色為灰色,如圖4-2(c)所示。按鈕(a)初始情況

(b)單擊Button按鈕效果(c)單擊ImageButton圖標(biāo)效果圖4-2按鈕按鈕的應(yīng)用<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/text”/><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/button"/> <ImageButton按鈕事件finalTextViewtextView=(TextView)this.findViewById(R.id.textView);Buttonbutton=(Button)this.findViewById(R.id.button);ImageButtonimageButton=(ImageButton)this.findViewById(R.id.imageButton);//為普通按鈕添加單擊事件監(jiān)聽器button.setOnClickListener(newOnClickListener(){ publicvoidonClick(Viewv){ textView.setText("你單擊了Button按鈕"); textView.setBackgroundColor(Color.WHITE); textView.setTextSize(20); } });單選按鈕及復(fù)選按鈕Android中,單選按鈕(RadioButton)和復(fù)選按鈕(CheckBox)都繼承自普通按鈕,它們除可直接使用普通按鈕具有的功能外,它們還提供了可選中的功能。圖4-3是單選按鈕和復(fù)選按鈕的一個(gè)示例。圖4-3單選按鈕和復(fù)選按鈕單選按鈕及復(fù)選按鈕<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical">

<TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/title"android:layout_gravity="center_horizontal"android:textSize="24dp"/><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/sex"/><RadioGroupandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:orientation="horizontal"><RadioButtoandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/male"/>單選按鈕及復(fù)選按鈕<RadioButtonandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/female"/></RadioGroup><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/hobby"/> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ball"/> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/reading"/> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/travelling"/> <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/sleep"/></LinearLayout>圖像視圖圖像視圖(ImageView)用于在屏幕中顯示任何Drawable對(duì)象,通常用來顯示圖片。而ImageView組件顯示圖像時(shí),通常預(yù)先將要顯示的圖片放置在res/drawable目錄中。圖4-4按鈕圖像圖像視圖<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:src="@drawable/leaf"/><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_margin="5dp"android:tint="#aaff3456"android:src="@drawable/leaf"/></LinearLayout>列表選擇框

列表選擇框(Spinner)是從多個(gè)選項(xiàng)中選擇一個(gè)選項(xiàng)的組件,類似于網(wǎng)頁(yè)中的下拉列表網(wǎng),通常用于提供一系列可選擇的列表項(xiàng)供用戶進(jìn)行選擇,從而方便用戶。(a)簡(jiǎn)單菜單浮動(dòng)方式(b)Android內(nèi)置菜單浮動(dòng)方式列表選擇框

使用Java代碼形式<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/select"/><Spinner android:id="@+id/spinner1" android:entries="@array/language" android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>列表選擇框關(guān)鍵代碼:<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><TextViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:text="@string/select"/><Spinner android:id="@+id/spinner1" android:entries="@array/language" android:layout_width="wrap_content"android:layout_height="wrap_content"/></LinearLayout>列表選擇框使用Java代碼形式//獲取Spinner對(duì)象引用Spinnerspinner=(Spinner)this.findViewById(R.id.spinner1);//聲明要保存顯示信息內(nèi)容的列表對(duì)象List<String>list=newArrayList<String>();list.add("Java");//為列表添加內(nèi)容list.add("C");list.add("C++");list.add("PHP");list.add("Python");//建立一個(gè)數(shù)組適配器對(duì)象,將界面控件與底層數(shù)據(jù)綁定在一起ArrayAdapter<String>adapter=newArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list);//設(shè)定Spinner活動(dòng)菜單的顯示方式 adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);//將Spinner對(duì)象與數(shù)組適配器對(duì)象綁定spinner.setAdapter(adapter);列表視圖列表視圖(ListView)是Android中最常用的一種視圖組件,以垂直列表的形式列出需要顯示的列表項(xiàng),如果顯示內(nèi)容過多,則會(huì)出現(xiàn)垂直滾動(dòng)條。列表視圖可用于顯示系統(tǒng)設(shè)置項(xiàng)或功能內(nèi)容列表等。圖4-6列表視圖列表視圖<?xmlversion="1.0"encoding="utf-8"?><resources><string-arrayname="setting"><item>無(wú)線和網(wǎng)絡(luò)</item><item>設(shè)備</item><item>個(gè)人</item><item>系統(tǒng)</item></string-array></resources>此時(shí)我們需要為L(zhǎng)istView添加OnItemClickListener事件監(jiān)聽器,具體代碼如下:ListViewlistView=(ListView)this.findViewById(R.id.listView);listView.setOnItemClickListener(newOnItemClickListener(){publicvoidonItemClick(AdapterView<?>parent,Viewarg1,intpos, longid){ Stringresult=parent.getItemAtPosition(pos).toString();//獲取選擇項(xiàng)的值

Toast.makeText(MainActivity.this,result,Toast.LENGTH_LONG).show();//顯示提示消息框

}});列表視圖在模擬器中運(yùn)行,當(dāng)我們點(diǎn)擊“設(shè)備”時(shí),消息提示框中將顯示“設(shè)備”,如圖4-7所示。

圖4-7列表視圖事件監(jiān)聽事件處理現(xiàn)在的圖形界面應(yīng)用程序,都是通過事件來實(shí)現(xiàn)人機(jī)交互的。事件就是用戶對(duì)圖形界面的操作,比如單擊一個(gè)按鈕就會(huì)觸發(fā)一個(gè)按鈕的單擊事件。所以事件處理是應(yīng)用程序與用戶交互的前沿,在Android框架的設(shè)計(jì)中,以事件監(jiān)聽器(eventlistener)的方式來處理用戶界面的使用者事件。在Android手機(jī)和平板電腦上,主要包括鍵盤事件、觸摸事件和手勢(shì)等。鍵盤事件包括按下、彈起等,觸摸事件包括按下、彈起、滑動(dòng)、雙擊等,手勢(shì)事件包括按下、拋擲、長(zhǎng)按、滾動(dòng)、按住、抬起等。鍵盤事件Android中提供了onKeyUp()、onKeyDown()和onKeyLongPress()方法用于處理物理按鍵事件。對(duì)于一個(gè)標(biāo)準(zhǔn)的Android設(shè)備,包含了多個(gè)能夠觸發(fā)事件的物理按鍵,如表4-1所示。物理按鍵KeyEvent說明電源鍵KEYCODE_POWER啟動(dòng)或喚醒設(shè)備,將界面切換到鎖定的屏幕后退鍵KEYCODE_BACK返回到前一個(gè)界面菜單鍵KEYCODE_MENU顯示當(dāng)前應(yīng)用的可用菜單Home鍵KEYCODE_HOME返回到Home界面查找鍵KEYCODE_SEARCH在當(dāng)前應(yīng)用中啟動(dòng)搜索相機(jī)鍵KEYCODE_CAMERA啟動(dòng)相機(jī)音量鍵KEYCODE_VOLUME_UPKEYCODE_VOLUME_DOWN控制當(dāng)前上下文音量,如音樂播放器、手機(jī)鈴聲、通話音量等方向鍵KEYCODE_DPAD_CENTER導(dǎo)航鍵,確定KEYCODE_DPAD_UP導(dǎo)航鍵,向上KEYCODE_DPAD_DOWN導(dǎo)航鍵,向下KEYCODE_DPAD_LEFT導(dǎo)航鍵,向左KEYCODE_DPAD_RIGHT導(dǎo)航鍵,向右鍵盤鍵KEYCODE_0,…,KEYCODE_9按鍵0到按鍵9KEYCODE_A,…,KEYCODE_Z按鍵A到按鍵Z物理按鍵表4-1

Android設(shè)備可用物理按鍵及其觸發(fā)實(shí)例分析圖4-9是按鍵事件的一個(gè)示例,當(dāng)用戶按下減少音量鍵時(shí),則在屏幕上提示“音量減少”。為實(shí)現(xiàn)上述效果,首先創(chuàng)建一個(gè)名為KeyEvent的Android工程,打開MainActivity.java,在其中重寫onKeyDown(int,KeyEvent)方法,關(guān)鍵代碼如下:if(keyCode==KeyEvent.KEYCODE_VOLUME_DOWN){Toast.makeText(this,"音量減少",Toast.LENGTH_SHORT).show(); returntrue;}圖4-9按鍵事件觸摸事件對(duì)于按鈕,可以使用OnClickListener和OnLongClickListener監(jiān)聽器分別處理用戶短時(shí)間單擊和用戶長(zhǎng)時(shí)間單擊事件。(a)短按按鈕效果(b)長(zhǎng)按按鈕效果圖4-10觸摸事件觸摸事件Buttonbutton=(Button)this.findViewById(R.id.button1);button.setOnClickListener(newOnClickListener(){publicvoidonClick(Viewv){Toast.makeText(MainActivity.this,"短時(shí)間單擊按鈕信息",Toast.LENGTH_SHORT).show();} });button.setOnLongClickListener(newOnLongClickListener(){publicbooleanonLongClick(Viewv){ Toast.makeText(MainActivity.this,"長(zhǎng)時(shí)間單擊按鈕信息",Toast.LENGTH_SHORT).show(); returnfalse;} });手勢(shì)目前很多款手機(jī)都支持手寫輸入,其原理是根據(jù)用戶輸入的內(nèi)容,在預(yù)先定義的詞庫(kù)中查找最佳匹配項(xiàng)供用戶選擇。下面介紹如何在Android中創(chuàng)建和識(shí)別手勢(shì)。圖4-11應(yīng)用程序界面

圖4-12創(chuàng)建手勢(shì)界面手勢(shì)運(yùn)行模擬器,進(jìn)入應(yīng)用程序界面,如圖4-11所示。在圖4-11中,單擊”GesturesBuilder”應(yīng)用,進(jìn)入如圖4-12所示界面。在Name欄中輸入該手勢(shì)所代表的字符如a,在Name欄下畫出對(duì)應(yīng)的手勢(shì)(如圖4-13),單擊Done按鈕完成相應(yīng)手勢(shì)的增加。如我們添加了“AaJndoir”等,則最后所有手勢(shì)顯示情況如圖4-14所示。圖4-13繪制a手勢(shì)

圖4-14顯示所有手勢(shì)界面手勢(shì)創(chuàng)建完手勢(shì)之后,我們需要將保存好的手勢(shì)文件導(dǎo)出,以便在自己開發(fā)的應(yīng)用程序中使用。導(dǎo)出方法:打開Eclipse并切換到DDMS視圖,在FileExplorer中找到\mnt\sdcard\gestures文件,并將其導(dǎo)出,使用默認(rèn)名稱gestures。<android.gesture.GestureOverlayView android:id="@+id/gestures" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_weight="1.0" ></android.gesture.GestureOverlayView>手勢(shì)打開MainActivity.java,讓其實(shí)現(xiàn)OnGesturePerformedListener接口。在onCreate()方法中,加載raw文件夾中的手勢(shì)文件,接著獲取布局文件中定義的GestureOverlayView控制,在onGesturePerformed()方法中實(shí)現(xiàn)獲得得分最高的預(yù)測(cè)結(jié)果并提示。關(guān)鍵代碼如下:protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); library=GestureLibraries.fromRawResource(this,R.raw.gestures);//加載手勢(shì)文件 if(!library.load()){ finish();//如果加載手勢(shì)文件失敗,則退出 } GestureOverlayViewgesture=(GestureOverlayView)this.findViewById(R.id.gestures); gesture.addOnGesturePerformedListener(this);//增加事件監(jiān)聽器}Intent的使用Intent是一種輕量級(jí)的消息傳遞機(jī)制,可在同一個(gè)應(yīng)用程序內(nèi)部的不同組件之間傳遞消息,也可在不同應(yīng)用程序的組件之間傳遞消息,還可作為廣播事件發(fā)布Android系統(tǒng)消息。由于Intent的存在,使得Android系統(tǒng)中互相獨(dú)立的組件成為可互相通信的組件集合。因此,無(wú)論這些組件是否在同一個(gè)應(yīng)用程序中,Intent都可將一個(gè)組件的數(shù)據(jù)或動(dòng)作傳遞給另一個(gè)組件。Intent是一個(gè)動(dòng)作的完整描述,包含了動(dòng)作的產(chǎn)生組件、接收組件和所傳遞的數(shù)據(jù)信息,接收組件在接收到Intent所傳遞的消息后,會(huì)執(zhí)行相應(yīng)的動(dòng)作。Intent支持顯示啟動(dòng)或隱式啟動(dòng)組件,顯示啟動(dòng)需要指明需要加載組件的類,隱式啟動(dòng)則無(wú)須指明具體的類,只要提供需要處理的數(shù)據(jù)或動(dòng)作即可。1)顯式的Intent在同一個(gè)程序中需要從當(dāng)前Activity跳轉(zhuǎn)到另一個(gè)指定的Activity,這時(shí)常用顯示的Intent。要?jiǎng)?chuàng)建一個(gè)顯式的Intent,可使用構(gòu)造方法Intent(ContextpackageContext,Class<?>cls)來創(chuàng)建。兩個(gè)參數(shù)分別指定Context和Class,Context設(shè)置為當(dāng)前的Activity對(duì)象,Class設(shè)置為需要跳轉(zhuǎn)到的Activity的類對(duì)象,比如要從當(dāng)前界面跳轉(zhuǎn)到LoginActivity,就可采用如下兩種方式構(gòu)造一個(gè)Intent對(duì)象:Intent的使用方法1:Intentintent=newIntent(this,LoginActivity.class);startActivity(intent);方法2:Intentintent=newIntent();intent.setClass(this,LoginActivity.class);startActivity(intent);注意:新使用的Activity,如此處的LoginActivity,必須在AndroidManifest.xml文件中配置。2)隱式的IntentIntent機(jī)制更重要的作用在于Intent的發(fā)送者不指定接收者,很可能不知道也不關(guān)心接收者是誰(shuí),而是由Android框架去尋找最匹配的接收者。如程序需要調(diào)用Android的電話功能,就要采用如下方式創(chuàng)建Intent。

Intent的使用方法1:Intentintent=newIntent(Intent.ACTION_DIAL);startActivity(intent);方法2:Intentintent=newIntent();intent.setAction(Intent.ACTION_DIAL);startActivity(intent);不管是顯式還是隱式Intent,在完成Activity的切換的時(shí)候都可能涉及到數(shù)據(jù)的傳遞。Intent給用戶提供了一系列的方法,如putExtra(Stringname,Stringvalue):采用key-value的形式,name是數(shù)據(jù)的鍵值,value是數(shù)據(jù)的值。

小結(jié)本章主要講解了基本用戶界面中所用到的基本組件、事件處理、Intent的使用等。基本組件需要讀者重點(diǎn)掌握,在實(shí)際編程時(shí)經(jīng)常使用;對(duì)于事件處理,本章給出的為常見的事件處理方式,通過與前面介紹的常用組件結(jié)合,可實(shí)現(xiàn)Android應(yīng)用程序的外部骨架;對(duì)于Intent的使用,在開發(fā)中,應(yīng)注意顯式Intent和隱式Intent的使用。第5章高級(jí)用戶界面本章內(nèi)容高級(jí)組件自動(dòng)完成文本框進(jìn)度條選項(xiàng)卡消息提示框與對(duì)話框消息提示框通知對(duì)話框菜單上下文菜單選項(xiàng)菜單子菜單小結(jié)自動(dòng)完成文本框自動(dòng)完成文本框(AutoCompleteTextView)是EditText的子類,用于實(shí)現(xiàn)當(dāng)用戶輸入一定字符后,顯示一個(gè)下拉菜單,供用戶進(jìn)行選擇,當(dāng)用戶選擇某個(gè)選項(xiàng)后,按用戶選擇自動(dòng)填寫該文本框。建議列表顯示在一個(gè)下拉列表框中,可以選中某項(xiàng)代替編輯框里的內(nèi)容。當(dāng)用戶點(diǎn)擊回車鍵時(shí),或什么也沒有選中點(diǎn)擊回車鍵時(shí),下拉列表自動(dòng)消失。建議列表是從一個(gè)數(shù)據(jù)適配器獲取的數(shù)據(jù)。在屏幕中添加自動(dòng)完成文本框,和添加基本組件一樣,在XML布局文件中通過<AutoCompleteTextView>標(biāo)記添加,基本語(yǔ)法格式如下:<AutoCompleteTextView屬性列表></AutoCompleteTextView>自動(dòng)完成文本框圖5-1是自動(dòng)完成文本框的一個(gè)示例,當(dāng)用戶在輸入框中輸入“ja”時(shí),則下拉列表中會(huì)自動(dòng)顯示相關(guān)的搜索內(nèi)容。<LinearLayoutxmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent">圖5-1自動(dòng)完成文本框示例自動(dòng)完成文本框

<AutoCompleteTextViewandroid:id="@+id/autoCompleteTextView"android:layout_width="0dp"android:layout_height="wrap_content"android:text=""android:c

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論