移動應(yīng)用開發(fā)技術(shù)實驗指導(dǎo)書(最終版)_第1頁
移動應(yīng)用開發(fā)技術(shù)實驗指導(dǎo)書(最終版)_第2頁
移動應(yīng)用開發(fā)技術(shù)實驗指導(dǎo)書(最終版)_第3頁
移動應(yīng)用開發(fā)技術(shù)實驗指導(dǎo)書(最終版)_第4頁
移動應(yīng)用開發(fā)技術(shù)實驗指導(dǎo)書(最終版)_第5頁
已閱讀5頁,還剩158頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、PAGE PAGE 227實驗1 Android SDK開發(fā)環(huán)境的安裝及配置1.1 實驗?zāi)康?掌握J(rèn)ava SDK和Android SDK開發(fā)環(huán)境的安裝和配置1.2 實驗內(nèi)容 Java SDK的安裝和環(huán)境變量的配置 Eclipse的安裝和配置 Android SDK的安裝和環(huán)境變量的配置 Eclipse插件ADT的安裝和配置 Android模擬器的配置1.3 實驗步驟1.Java SDK的安裝和環(huán)境變量的配置1)下載JDK:官方網(wǎng)址為HYPERLINK /technetwork/java/javase/downloads/jdk7u9-downloads-1859576.html/techne

2、twork/java/javase/downloads/jdk7u9-downloads-1859576.html,根據(jù)電腦的操作系統(tǒng)選擇正確的版本進(jìn)行下載(如圖1-1)。下載完成之后如圖1-2所示。圖1-1 JDK下載選擇界面圖1-2 JDK下載完成示意圖2)安裝JDK:雙擊安裝包進(jìn)行安裝,顯示如圖1-3所示的安裝向?qū)?。圖1-3 JDK安裝向?qū)?)點擊下一步,選中要安裝得部分和要安裝的路徑,建議使用默認(rèn)配置?!伴_發(fā)工具”是必須安裝的,它是JDK的核心,“源代碼”是JDK類庫包的源代碼,建議安裝(很多時候都能用到源代碼)。“公共JRE”可以選擇不安裝,因為JDK中包括JRE。這里選擇默認(rèn)的配置

3、,如圖1-4所示。圖1-4 JDK安裝路徑選擇界面4)選擇安裝的路徑,點擊下一步安裝JDK,其安裝狀態(tài)如圖1-5所示。圖1-5 JDK安裝狀態(tài)界面5)當(dāng)JDK安裝完成后會提示是否安裝JRE,如圖1-6所示。圖1-6 JRE安裝提示界面6)點擊下一步,出現(xiàn)JRE安裝進(jìn)度界面,如圖1-7所示。安裝完成后如圖1-8所示。圖1-7 JRE安裝進(jìn)度顯示界面圖1-8 JRE安裝完成界面7)配置環(huán)境變量:在Windows操作系統(tǒng)當(dāng)中配置path和classpath兩個環(huán)境變量。(1)右擊我的電腦-屬性,點擊“高級”選項卡,單擊“環(huán)境變量”,如圖1-9所示。圖1-9 環(huán)境變量選擇界面(2)選擇系統(tǒng)變量中的Pa

4、th變量,如圖1-10所示。圖1-10 配置Path變量(3)將安裝路徑復(fù)制到Path路徑的最后面,(安裝路徑的查找如圖1-11所示),注意添加路徑之前先加英文的分號,如圖1-12所示。圖1-11 復(fù)制安裝路徑圖1-12 添加路徑(4)驗證環(huán)境變量是否配置成功,打開命令行窗口,輸入命令java version,如可以出現(xiàn)圖1-13所示的信息,則說明JDK已經(jīng)安裝成功。圖1-13 驗證環(huán)境變量配置情況(5)配置環(huán)境變量classpath,如上所述,點擊環(huán)境變量,新建系統(tǒng)變量,變量名為classpath,變量值為英文的句號,如圖1-14所示。到此為止,兩個環(huán)境變量也配置成功。圖1-14 配置cla

5、sspath變量8)下面運行第一個java程序HelloWorld。(1)新建文件HelloWorld.java 。使用文本編輯器NotePad+打開(如圖1-15所示),編寫簡單的HelloWorld程序。 圖1-15 編寫HelloWorld程序(2)打開命令行,輸入HelloWorld程序所在的磁盤名,對java文件進(jìn)行編譯,編譯之后出現(xiàn)一個新的文件HelloWorld.class,最后執(zhí)行.class文件,打印出“Hello World!”,如圖1-16所示。圖1-16 編譯執(zhí)行HelloWorld.java文件2. Eclipse的安裝和配置1)下載Eclipse:官方網(wǎng)址為HYPE

6、RLINK /downloads/downloads/,根據(jù)操作系統(tǒng)的位數(shù)來選擇Windows 32 Bit或者Windows 64 Bit,如圖1-17所示。圖1-17 Eclipse下載界面下載完成之后是個壓縮包,進(jìn)行解壓縮到某個路徑,如圖1-18所示。圖1-18 解壓下載文件2)雙擊eclipse.exe即可打開,選擇一個路徑作為workspace,如圖1-19所示。圖1-19 選擇workspace路徑3.Android SDK的安裝和配置1)官方下載地址為HYPERLINK /sdk/index.html/sdk/index.html,下載完成之后進(jìn)行安裝,如圖1-20所示。圖1-2

7、0 Android SDK下載2)配置環(huán)境變量將tools文件夾所在的路徑加入到環(huán)境變量path中,如圖1-21所示。圖1-21 配置環(huán)境變量Eclipse插件ADT的安裝和配置在eclipse中的help選項中選擇Install New Software,如圖1-22所示。圖1-22 Eclipes運行界面1)輸入網(wǎng)址HYPERLINK /android/eclipse/android/eclipse,點擊Add,如圖1-23所示。圖1-23 下載插件ADT2)點擊Next進(jìn)行安裝。然后在window中選擇Preferences中進(jìn)行路徑配置。圖1-24 路徑配置Android模擬器的配置1

8、)在eclipse中選擇安卓標(biāo)志圖標(biāo)進(jìn)行模擬器配置,如圖1-25所示。圖1-25 Android模擬器的配置第一步2)點解New,配置模擬器的詳細(xì)參數(shù),如圖1-26所示。,圖1-26 Android模擬器的配置第二步3)點擊Creat AVD,然后選擇4.0.3,點擊Start,進(jìn)行發(fā)布,如圖1-27所示。然后Android應(yīng)用就可以運行于模擬器上面了。1-27 注冊AVD實驗2 第一個應(yīng)用程序HelloWorld2.1 實驗?zāi)康?熟悉和了解Eclipse開發(fā)環(huán)境 掌握在Eclipse開發(fā)環(huán)境下新建Android應(yīng)用工程及運行Android應(yīng)用程序的方法。2.2 實驗內(nèi)容 新建Android工

9、程,并正確設(shè)置其運行環(huán)境。 在模擬器上運行Android應(yīng)用程序。 在我們的開發(fā)平臺上運行Android應(yīng)用程序。2.1 實驗步驟1)Eclipse為我們提供了大量的快捷鍵,要記住每一個快捷鍵幾乎是不可能的,但是掌握一些常用的快捷鍵,可以大大提升我們的開發(fā)效率。 Alt+/(代碼助手功能(代碼提示) Ctrl+Shift+W(關(guān)閉所有已打開的編輯窗口) Alt+Shift+R (重命名文件或變量) Ctrl+Shift+O (自動導(dǎo)入需要的包并刪除多余的import的語句) Alt+Shift+F (代碼格式化) Ctrl+1 (快速修復(fù)) Ctrl+D (刪除一行,光標(biāo)可以放在這行的任意位置

10、) Ctrl+Z (撤銷) Ctrl+Y (恢復(fù)) Ctrl+/ (添加與取出注釋/) Alt+Shift+S (快速添加java Bean類的各種方法)2)打開Eclipse,在菜單欄一次選擇:File-New-Project打開new project對話框,點擊Android選擇Android project,如圖2-1所示。圖2-1Eclipse工作界面圖2- 2新工程命名Project Name:工程名為HelloWorld,如圖2-3所示。圖2-3建立新工程Application Name:應(yīng)用程序的名字,可以輸入你想要的字符串,這里我們輸入HelloWorld,如圖6-30所示。P

11、ackage Name:包名,至少是兩級格式,如a.b,這里我們輸入。Creat Activity:自動幫我們創(chuàng)建Activity,取名為HelloWorldActivity。Minimum SDK:支持SDK的最低版本為8。到此,一個Android工程建立完畢,其工程目錄如圖2-4所示。圖2-4 新工程目錄3)在模擬器上運行該程序選擇HelloWorld,右擊選擇Run As-Android Application,或者Run-Run Configurations,如圖2-5所示。圖2-5 運行程序運行結(jié)果如圖2-6所示。-圖2-6 運行結(jié)果 右鍵點擊HelloWorld工程,一次選擇Run

12、 As-Android Application,如圖2-7所示。待實驗箱出現(xiàn)圖2-8所示,表示HelloWorld工程運行成功,圖2-7在其他開發(fā)平臺上運行程序選擇圖2-8 HelloWorld工程運行成功界面實驗3 活動Activity3.1 實驗?zāi)康?了解Android應(yīng)用程序中的活動程序Activity. 了解Activity執(zhí)行狀態(tài)遷移的生命周期.3.2 實驗內(nèi)容 編寫程序測試Android活動程序Activity執(zhí)行狀態(tài)遷移的生命周期的具體過程。3.3 實驗原理Android操作系統(tǒng)的活動程序(Activity)是最基本的處理工作單元,大部分的活動程序都會有一個相對應(yīng)的顯示窗體,就好

13、像HTML程序都會針對某一個網(wǎng)頁來描述。Android應(yīng)用程序的窗體就好比一個配置了按鈕、編輯框和文本框的窗體,一個可用瀏覽器顯示的Web網(wǎng)頁或一個播放3D影像的窗體。一個Android應(yīng)用程序是由一個或多個活動程序組成。Activity有三個狀態(tài):(1)當(dāng)它在屏幕前臺時(位于當(dāng)前任務(wù)堆棧的頂部),它是激活或運行狀態(tài)。它就是響應(yīng)用戶操作的Activity。(2)當(dāng)它上面有另外一個Activity,使它失去了焦點但仍然對用戶可見時,它處于暫停狀態(tài)。在它之上的Activity沒有完全覆蓋屏幕,或者是透明的,被暫停的Activity仍然對用戶可見,并且是存活狀態(tài)(它保留著所有的狀態(tài)和成員信息并保持和

14、窗口管理器的連接)。如果系統(tǒng)處于內(nèi)存不足時會殺死這個Activity。(3)當(dāng)它完全被另一個Activity覆蓋時則處于停止?fàn)顟B(tài)。它仍然保留所有的狀態(tài)和成員信息。然而對用戶是不可見的,所以它的窗口將被隱藏,如果其它地方需要內(nèi)存,則系統(tǒng)經(jīng)常會殺死這個Activity。當(dāng)Activity從一種狀態(tài)轉(zhuǎn)變到另一種狀態(tài)時,會調(diào)用以下保護(hù)方法來通知這種變化:/ 第一次創(chuàng)建是調(diào)用。在Acticity整個生命周期只會被調(diào)用一次 protected void onCreate(Bundle savedInstanceState);/ onCreate 調(diào)用之后就會調(diào)用 onStart protected voi

15、d onStart();/ onStart 之后調(diào)用 onRestart。此方法之后 Acticity 處于運行(激活)狀態(tài)。 protected void onRestart(); protected void onResume();/* 當(dāng)一個新的 Activity 被打開后,原來的 Activity 就會調(diào)用這個狀態(tài)。* 如果新打開的 Activity 并沒有完全覆蓋原來的 Activity?;蛘咝碌?Activity 是半透明狀態(tài), 原來的 Activity 還可以見。那么就只會調(diào)用這*個方法,使 Activity 處于暫停狀態(tài),否則,繼續(xù)往下調(diào)用 stop */ protected

16、void onPause();/ 當(dāng)一個新的 Activity 被打開之后,而原來的 Activity 被它覆蓋掉時,/ 在調(diào)完 onPause 方法后,就會調(diào)用onStop,使 Activity 處于停止?fàn)顟B(tài) protected void onStop();/當(dāng) Activity 被銷毀的時候,將調(diào)用 onDestroy protected void onDestroy();這七個方法定義了Activity的完整生命周期,實現(xiàn)這些方法可以幫助我們監(jiān)視其中的三個嵌套生命周期循環(huán)。 Activity的完整生命周期自第一次調(diào)用onCreate()開始,直至調(diào)用onDestroy()為止。Activ

17、ity在onCreate()中設(shè)置所有“全局”狀態(tài)以完成初始化,而在onDestroy()中釋放所有系統(tǒng)資源。例如,如果Activity有一個線程在后臺運行從網(wǎng)絡(luò)下載數(shù)據(jù),它會在onCreate()創(chuàng)建線程,而在 onDestroy()銷毀線程。Activity的可視生命周期自onStart()調(diào)用開始直到相應(yīng)的onStop()調(diào)用結(jié)束。在此期間,用戶可以在屏幕上看到Activity,盡管它也許并不是位于前臺或者也不與用戶進(jìn)行交互。在這兩個方法之間,我們可以保留用來向用戶顯示這個Activity所需的資源。例如,當(dāng)用戶不再看見我們顯示的內(nèi)容時,我們可以在onStart()中注冊一個Broadc

18、astReceiver來監(jiān)控會影響UI的變化,而在onStop()中來注消。onStart() 和 onStop() 方法可以隨著應(yīng)用程序是否為用戶可見而被多次調(diào)用。Activity的活躍生命周期自onResume()調(diào)用起,至相應(yīng)的onPause()調(diào)用為止。在此期間,Activity位于前臺最上面并與用戶進(jìn)行交互。Activity會經(jīng)常在暫停和恢復(fù)之間進(jìn)行狀態(tài)轉(zhuǎn)換例如當(dāng)設(shè)備轉(zhuǎn)入休眠狀態(tài)或者有新的Activity啟動時,將調(diào)用onPause() 方法。當(dāng)Activity獲得結(jié)果或者接收到新的Intent時會調(diào)用onResume() 方法。圖3-1是官網(wǎng)給出的一個Activity重要的狀態(tài)路徑

19、。直角矩形代表Activity在不同狀態(tài)之間轉(zhuǎn)換時,你可以調(diào)用的回調(diào)函數(shù)來實現(xiàn)某些操作。帶顏色的橢圓代表Activity可以處于的主要狀態(tài)。圖3-1 Activity重要的狀態(tài)路徑3.4 實驗步驟1)編程Activity_Lifecycle工程2)在Android模擬器上運行該程序右鍵單擊Activity_Lifecycley應(yīng)用程序工程,依次選擇Run As-Android Application,即會運行此應(yīng)用程序。一開始運行該應(yīng)用程序,首先會運行onCreat()方法,直接顯示main.XML窗體布局,如圖3-2所示。圖3-2 main.XML窗體布局接著開始執(zhí)行FirstActivit

20、的onCreat()-onStart()-onResume()方法,打印出相關(guān)信息,如圖3-3所示。圖3-3 FirstActivit執(zhí)行界面然后點擊按鈕,啟動SecondActivity,如圖3-4所示。圖3-4 啟動SecondActivity依次執(zhí)行FirstActivity的onPause(),SecondActivity的onCreat()- onStart()-onResume()和FirstActivity的onStop()方法,如圖3-5所示。圖3-5 FirstActivity的執(zhí)行順序此時點擊模擬器上的按鈕,界面回到FirstActivity,如圖3-6所示。圖3-6Fir

21、stActivity界面打印出信息如圖3-7所示。圖3-7 打印信息此時點擊打電話按鈕,打印出信息如圖3-8所示。圖3-8 點擊“電話按鈕”后的信息打印界面點擊回到FirstActivity,打印信息如圖3-9所示。圖3-9 FirstActivity信息界面點擊返回到主界面,打印信息如圖3-10所示。圖3-10 主界面4)為了加深對這幾個方法的了解,可是試著運行Activity_Lifecycle_01,只是把SecondActivity變成了窗口樣式,代碼沒有改變,但是打印出的信息不同了,自己可以嘗試分析。實驗4 Activity&Intent4.1 實驗?zāi)康牧私釧ndroid的意圖方法I

22、ntent了解Android活動程序Activity和意圖方法Intent之間的關(guān)系4.2 實驗內(nèi)容 編寫程序測試Android活動程序Activity如何進(jìn)行顯示窗體的切換 使用Intent在Activity之間傳遞數(shù)據(jù)4.3 實驗原理一般情況Android應(yīng)用程序是由以下四種組件構(gòu)造而成的: 活動 廣播接收器 服務(wù) 內(nèi)容提供器需要注意的是,并不是每個Android應(yīng)用程序都必須構(gòu)建這四個組件,有些可能由這些組件的組合而成。活動是最基本的Android應(yīng)用程序組件,應(yīng)用程序中,一個活動通常就是一個單獨的屏幕。每一個活動都被實現(xiàn)為一個獨立的類,并且從活動基類中繼承而來,活動類將會顯示由視圖控件

23、組成的用戶接口,并對事件做出響應(yīng)。大多數(shù)的應(yīng)用是由多屏幕顯示組成。在這些組件之間的通訊中,主要是由Intent協(xié)助完成的。Intent負(fù)責(zé)對應(yīng)用中一次操作的動作、動作涉及數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。Intent不僅可用于應(yīng)用程序之間,也可用于應(yīng)用程序內(nèi)部的Activity/Service之間的交互。因此,Intent在這里起著一個媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。在SDK中給出了Intent作用的表現(xiàn)形式為:通過HYPERLINK /ref

24、erence/android/content/Context.html l startActivity(android.content.Intent)Context.startActivity()或者HYPERLINK /reference/android/app/Activity.html l startActivityForResult(android.content.Intent, int)Activity.startActivityForResult()啟動一個Activity;通過HYPERLINK /reference/android/content/Context.html l

25、startService(android.content.Intent)Context.startService()啟動一個服務(wù),或者通過HYPERLINK /reference/android/content/Context.html l bindService(android.content.Intent, android.content.ServiceConnection, int)Context.bindService()和后臺服務(wù)交互;通過廣播方法(如Context.sendBroadcast(),Context。Send或dereBroadcast(),Context。sendSt

26、ickyBroadcast()發(fā)給broadcast receivers。Intent屬性的設(shè)置,包括以下幾點:(以下為XML中定義,當(dāng)然也可以通過Intent類的方法來獲取和設(shè)置)Action,也就是要執(zhí)行的動作。SDK中定義了一些標(biāo)準(zhǔn)的動作,如表7-1所示。當(dāng)然,也可以自定義動作(自定義的動作在使用時,需要加上包名作為前綴,如ject.SHOW_COLOR”),并可定義相應(yīng)的Activity來處理我們的自定義動作。(2)Data,也就是執(zhí)行動作要操作的數(shù)據(jù)Android中采用指向數(shù)據(jù)的一個URI來表示,如在聯(lián)系人應(yīng)用中,一個指向某聯(lián)系人的URI可能為:content:/contacts/1

27、。對于不同的動作,其URI數(shù)據(jù)的類型是不同的(可以設(shè)置type屬性指定特定類型數(shù)據(jù)),如ACTION_EDIT指定Data為文件URI,打電話為tel:URI,訪問網(wǎng)絡(luò)為http:URI,而由content provider提供的數(shù)據(jù)則為content:URIs。表7-1 SDK中定義的標(biāo)準(zhǔn)動作OnstantTarget componentActionACTION_CALLactivityInitiate a phone call.ACTION_EDITactivityDisplay data for the user to edit.ACTION_MAINactivityStart up a

28、s the initial activity of a task, with no data input and no returned output.ACTION_SYNCactivitySynchronize data on a server with data on the mobile device.ACTION_BATTERY_LOWbroadcast receiverA warning that the battery is low.ACTION_HEADSET_PLUGbroadcast receiverA headset has been plugged into the de

29、vice, or unplugged from it.ACTION_SCREEN_ONbroadcast receiverThe screen has been turned on.ACTION_TIMEZONE_CHANGEDbroadcast receiverThe setting for the time zone has changed.(3)type(數(shù)據(jù)類型),顯式指定Intent的數(shù)據(jù)類型(MIME)。一般Intent的數(shù)據(jù)類型能夠根據(jù)數(shù)據(jù)本身進(jìn)行判定,但是通過設(shè)置這個屬性,可以強制采用顯式指定的類型而不再進(jìn)行推導(dǎo)。(4)category(類別),被執(zhí)行動作的附加信息。例如 LA

30、UNCHER_CATEGORY 表示Intent 的接受者應(yīng)該在Launcher中作為頂級應(yīng)用出現(xiàn);而ALTERNATIVE_CATEGORY表示當(dāng)前的Intent是一系列的可選動作中的一個,這些動作可以在同一塊數(shù)據(jù)上執(zhí)行。還有其他的行為如表7-2所示。表7-2 被執(zhí)行動作的附加信息ConstantMeaningCATEGORY_BROWSABLEThe target activity can be safely invoked by the browser to display data referenced by a link for example, an image or an e-m

31、ail message.CATEGORY_GADGETThe activity can be embedded inside of another activity that hosts gadgets.CATEGORY_HOMEThe activity displays the home screen, the first screen the user sees when the device is turned on or when the HOME key is pressed.CATEGORY_LAUNCHERThe activity can be the initial activ

32、ity of a task and is listed in the top-level application launcher.CATEGORY_PREFERENCEThe target activity is a preference panel.(5)component(組件),指定Intent的的目標(biāo)組件的類名稱。通常 Android會根據(jù)Intent 中包含的其它屬性的信息,比如action、data/type、category進(jìn)行查找,最終找到一個與之匹配的目標(biāo)組件。但是,如果 component這個屬性有指定的話,將直接使用它指定的組件,而不再執(zhí)行上述查找過程。指定了這個屬性以

33、后,Intent的其它所有屬性都是可選的。(6)extras(附加信息),是其它所有附加信息的集合。使用extras可以為組件提供擴(kuò)展信息,比如,如果要執(zhí)行“發(fā)送電子郵件”這個動作,可以將電子郵件的的標(biāo)題、正文保存在extras里,傳給電子郵件發(fā)送組件。(a)Intent-Filter的定義中一些屬性設(shè)置的例子 (b)Intent用法實例無參數(shù)Activity跳轉(zhuǎn)Intent it = new Intent(Activity.Main.this, Activity2.class);startActivity(it); 向下一個Activity傳遞數(shù)據(jù)(使用Bundle和Intent.putEx

34、tras)Intent it = new Intent(Activity.Main.this, Activity2.class);Bundle bundle=new Bundle();bundle.putString(name, This is from MainActivity!);it.putExtras(bundle); / it.putExtra(“test”, shuju”);startActivity(it); / startActivityForResult(it,REQUEST_CODE);對于數(shù)據(jù)的獲取可以采用:Bundle bundle=getIntent().getExt

35、ras();String name=bundle.getString(name);(c)向上一個Activity返回結(jié)果(使用setResult,針對startActivityForResult(it,REQUEST_CODE)啟動的Activity)Intent intent=getIntent();Bundle bundle2=new Bundle();bundle2.putString(name, This is from ShowMsg!);intent.putExtras(bundle2);setResult(RESULT_OK, intent);(d)回調(diào)上一個Activity的結(jié)

36、果處理函數(shù)(onActivityResult)Override protected void onActivityResult(int requestCode, int resultCode, Intent data) / TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); if (requestCode=REQUEST_CODE) if(resultCode=RESULT_CANCELED) setTitle(cancle); else if (resultCode=RE

37、SULT_OK) String temp=null; Bundle bundle=data.getExtras(); if(bundle!=null) temp=bundle.getString(name); setTitle(temp); 其他的一些應(yīng)用實例:打電話 a.叫出撥號程序 Uri uri = Uri.parse(tel:0800000123);Intent it = new Intent(Intent.ACTION_DIAL, uri);startActivity(it);b.直接打電話出去Uri uri = Uri.parse(tel:0800000123);Intent it

38、 = new Intent(Intent.ACTION_CALL, uri);startActivity(it);使用這些程序,需要在 AndroidManifest.xml 中,加上 /傳送SMS/MMS調(diào)用短信程序Intent it = new Intent(Intent.ACTION_VIEW, uri); it.putExtra(sms_body, The SMS text); it.setType(vnd.android-dir/mms-sms); startActivity(it);b.傳送消息 Uri uri = Uri.parse(smsto:/0800000123); Int

39、ent it = new Intent(Intent.ACTION_SENDTO, uri); it.putExtra(sms_body, The SMS text); startActivity(it);c.傳送 MMSUri uri = Uri.parse(content:/media/external/images/media/23);Intent it = new Intent(Intent.ACTION_SEND);it.putExtra(sms_body, some text);it.putExtra(Intent.EXTRA_STREAM, uri);it.setType(ima

40、ge/png);startActivity(it);4.4 實驗步驟利用Activity_intent應(yīng)用程序來演示如何利用Intent類來進(jìn)行顯示窗體間的切換。按照前面所屬步驟導(dǎo)入工程,程序啟動起來,顯示的第一個窗體如圖4-1所示。圖4-1啟動程序后所顯示的第一個窗體點擊按鈕,啟動OtherActivity,此時,通過以下代碼向OtherActivity傳遞數(shù)據(jù):/生成一個Intent對象Intent intent = new Intent();/在Intent對象當(dāng)中添加一個鍵值對intent.putExtra(testIntent, 123);/設(shè)置Intent對象要啟動的Activit

41、yintent.setClass(Activity01.this, OtherActivity.class);/通過Intent對象啟動另外一個ActivityActivity01.this.startActivity(intent);OtherActivity啟動之后,如圖4-2所示,包含一個TextView,用來顯示從Activity01傳遞過來的數(shù)據(jù)。圖4-2 從Activity01傳遞過來的數(shù)據(jù)使用Intent啟動發(fā)短信的Activity,以下的4行代碼將啟動發(fā)送短信的Activity。Uri uri = Uri.parse(smsto:/0800000123); Intent int

42、ent = new Intent(Intent.ACTION_SENDTO, uri); intent.putExtra(sms_body, The SMS text);startActivity(intent);執(zhí)行結(jié)果如圖4-3所示。圖4-3使用Intent啟動發(fā)短信的Activity點擊按鈕,啟動發(fā)短信的Activity,如圖4-4所示。圖4-4 發(fā)短信的Activity界面上面的例子說明,Intent在兩個Activity之間傳遞數(shù)據(jù),并不要求這兩個Activity在同一個應(yīng)用程序下。實驗5 Android常用的控件5.1 實驗?zāi)康恼莆誂ndroid常用控件的使用方法和基本屬性。5.2

43、 實驗內(nèi)容測試Android應(yīng)用程序中常用控件的使用方法5.3 實驗原理(1)TextView文本顯示框xml設(shè)計,代碼如下所示。代碼設(shè)計 TextView textView = new TextView(this); /聲明對象 textView.setTextColor(Color.RED); /設(shè)置字體顏色 textView.setTextSize(20); /設(shè)置字體大小 textView.setBackgroundColor(Color.BLUE);/控件背景色 textView.setText(你好) /顯示的文字 textView.setHeight textView.setWi

44、dth textView.setVisibility(GONE/VISIBLE); /設(shè)置為不可見/可見 textView.setGravity(Gravity.CENTER);/設(shè)置文字權(quán)重綁定監(jiān)聽器 TextView textView = (TextView)findViewById(R.id.myTextView); /得到對象textView.setOnClickListener(new OnClickListener() public void onClick(View v) / TODO Auto-generated method stubsecondTextView.setTex

45、t(你好!););(2)Button按鈕設(shè)置監(jiān)聽器myButton.setOnClickListener(new OnClickListener() public void onClick(View v) / TODO Auto-generated method stub/處理按鈕事件產(chǎn)生一個Toast,利用button.getText()得到按鈕顯示的內(nèi)容Toast toast = Toast.makeText(Activity01.this, 你點擊了“+myButton.getText()+”按鈕!,Toast.LENGTH_LONG);/設(shè)置toast顯示的位置toast.setGra

46、vity(Gravity.TOP, 0, 150);/顯示該Toasttoast.show(););ImageButton帶圖標(biāo)的按鈕控件 /在xml設(shè)計所使用的圖片 代碼中設(shè)計imageButton.setImageDrawable(getResources().getDrawable(R.drawable.image2);/在代碼中設(shè)計使用的圖片(得到對象后) 設(shè)置監(jiān)聽器imageButton=(Button) findViewById(R.id.myButton); imageButton.setOnClickListener(new OnClickListener() public v

47、oid onClick(View v) / TODO Auto-generated method stub);(4)EditText文本編輯框 (a)xml設(shè)計 (b)代碼設(shè)計myEditText1=(EditText) findViewById(R.id.myEditText1); myEditText1.setOnClickListener(new OnClickListener() public void onClick(View v) / TODO Auto-generated method stub);(5)CheckBox復(fù)選框控件CheckBox readBox = (Check

48、Box)findViewById(R.id.read);/多選按鈕添加監(jiān)聽器readBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) / TODO Auto-generated method stubif(isChecked) Toast.makeText(ActivityTest.this,read,Toast.LENGTH_SHORT).sh

49、ow(); System.out.println(read is checked); else System.out.println(read is not checked); );(6)RadioButton單選按鈕,RadioGroup單選鈕組一個單選選擇由兩部分組成,分別是前面的選擇按鈕和后面的內(nèi)容。按鈕通過RadioButton來實現(xiàn),答案通過RadioGroup來實現(xiàn) 代碼中private RadioGroup radioGroup;private RadioButton femaleButton;private RadioButton maleButton;radioGroup =

50、 (RadioGroup)findViewById(R.id.radioGroup); femaleButton = (RadioButton)findViewById(R.id.femaleButton); maleButton = (RadioButton)findViewById(R.id.maleButton);radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() public void onCheckedChanged(RadioGroup group, int checkedId

51、) / TODO Auto-generated method stubif(femaleButton.getId()=checkedId)Toast.makeText(ActivityTest.this,性別是女, Toast.LENGTH_SHORT).show();System.out.println(famele is checked);else if(maleButton.getId()=checkedId)Toast.makeText(ActivityTest.this,性別是男, Toast.LENGTH_SHORT).show(); System.out.println(male

52、 is checked););實現(xiàn)結(jié)果如圖5-1所示。圖5-1 單選按鈕和單選鈕組(7)ListView列表在main.xml中定義ListView另外還需要一個布局文件,用于定義ListView中顯示內(nèi)容的格式在代碼中的使用如下(注意:我們所定義的Activity 要繼承ListActivity,它是Activity的子類):ArrayListHashMap list = new ArrayListHashMap(); HashMap map1 = new HashMap(); HashMap map2 = new HashMap(); HashMap map3 = new HashMap(

53、); map1.put(user_name, 張三); map1.put(user_ip, ); map2.put(user_name, 李四); map2.put(user_ip, ); map3.put(user_name, 王五); map3.put(user_ip, ); list.add(map1); list.add(map2); list.add(map3); ListView listView=getListView(); registerForContextMenu(listView); /public SimpleAdapter (Context context, List

54、? extends Map data, int resource, String from, int to) /1.上下文 /2.為ListView提供數(shù)據(jù) /3.用來設(shè)置條目樣式的布局文件 /4.制定條目數(shù)據(jù)的key /5.制定條目數(shù)據(jù)現(xiàn)實的控件ID SimpleAdapter listAdapter = new SimpleAdapter(this, list, R.layout.user, new Stringuser_name,user_ip, new intR.id.user_name,R.id.user_ip); /將SimpleAdapter設(shè)置給當(dāng)前的ListActivity

55、setListAdapter(listAdapter); Public void onCreateContextMenu(ContextMenu menu,View v,ContextMenuInfo menuInfo) menu.setHeaderTitle(選項); menu.add(0, 1, 1, 刪除); menu.add(0, 2, 3, 編輯); super.onCreateContextMenu(menu, v, menuInfo); /菜單單擊響應(yīng) Override public boolean onContextItemSelected(MenuItem item) ret

56、urn true;Overrideprotected void onListItemClick(ListView l, View v, int position, long id) / TODO Auto-generated method stubsuper.onListItemClick(l, v, position, id);System.out.println(id+id);System.out.println(position+position);實驗結(jié)果如圖5-2所示。 圖5-2 列表(ListView)(9)ProgressBar進(jìn)度條private ProgressBar fir

57、stBar =null;private ProgressBar secondBar = null;private Button myButton = null;private int i = 0 ; Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); /根據(jù)控件的ID來取得代表控件的對象 firstBar = (ProgressBar)findViewById(R.id.firstBar); seco

58、ndBar = (ProgressBar)findViewById(R.id.secondBar); myButton = (Button)findViewById(R.id.myButton); myButton.setOnClickListener(new ButtonListener(); class ButtonListener implements OnClickListener public void onClick(View v) if(i = 0)/設(shè)置進(jìn)度條處于可見的狀態(tài)firstBar.setVisibility(View.VISIBLE);firstBar.setMax(

59、150);secondBar.setVisibility(View.VISIBLE);else if ( i firstBar.getMax()/設(shè)置主進(jìn)度條的當(dāng)前值firstBar.setProgress(i);/設(shè)置第二進(jìn)度條的當(dāng)前值firstBar.setSecondaryProgress(i + 10);/因為默認(rèn)的進(jìn)度條無法顯示進(jìn)行的狀態(tài)/secondBar.setProgress(i);else/設(shè)置進(jìn)度條處于不可見狀態(tài)firstBar.setVisibility(View.GONE);secondBar.setVisibility(View.GONE);i = i + 10 ;實

60、驗結(jié)果如圖5-3所示。圖5-3 進(jìn)度條(ProgressBar)(9)TimePicker時間選擇控件public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); Button showTimeButton = (Button)findViewById(R.id.myButton); showTimeButton.setOnClickListener(new OnClickListener() public void onCli

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論