




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、. . . . 基于 android 系統(tǒng)的 BMI 軟件的設(shè)計(jì)與研究作者作者吳永輝指導(dǎo)教師指導(dǎo)教師 永奎 關(guān)東升所學(xué)專業(yè)所學(xué)專業(yè)計(jì)算機(jī)科學(xué)與技術(shù)班級班級07 計(jì)科 B1所屬院系所屬院系信息學(xué)院學(xué)習(xí)年限學(xué)習(xí)年限2007年年9月至月至2011年年7月月二 一一 年五 月學(xué)號:學(xué)號:20078401342007840134本 科 畢 業(yè) 論 文(設(shè) 計(jì)). . . . 目目 錄錄基于 ANDROID 系統(tǒng)的 BMI 軟件的設(shè)計(jì)與研究1. 引言 12. ANDROID 操作系統(tǒng)簡介 12.1 幾種智能手機(jī)系統(tǒng)的比較 12.2 ANDROID 的體系結(jié)構(gòu)與設(shè)計(jì)實(shí)現(xiàn) 32.2.1 Android 體系結(jié)
2、構(gòu)簡介 32.2.2 Android 架構(gòu) 32.3.3 Linux Kernel (Linux 核)42.3.4 Application Frameworks (應(yīng)用框架)42.2.5 Libraries (庫)42.2.6 Applications (應(yīng)用)53. 搭建 ANDROID 開發(fā)環(huán)境 53.1 系統(tǒng)需求 53.2 安裝相應(yīng)的開發(fā)工具 53.2.1 下載 Eclipse53.2.2 安裝 Eclipse53.2.3 安裝 ADT 擴(kuò)充套件 53.2.4 下載并設(shè)定 Android SDK64. 程序開發(fā) 64.1 創(chuàng)建名為 BMI 的工程 64.2 實(shí)現(xiàn)相應(yīng)的功能 64.2.1
3、設(shè)計(jì)使用者界面 74.2.2 將字串抽離 XML9. . . . 4.2.3 界面功能 114.2.4 完成程序相關(guān)代碼 125. 程序功能演示與測試 145.1 程序功能測試 145.2 保存程序 146. 結(jié)束語 14致 23參考文獻(xiàn) 25. . . . 3 / 31基于 android 系統(tǒng)的 BMI 軟件的設(shè)計(jì)與研究學(xué)生:吳永輝 指導(dǎo)教師:永奎 關(guān)東升容提要 BMI指數(shù)是根據(jù)身高、體重、年齡以與地域來判斷人體胖瘦程度以與是否健康。Android 作為Google開發(fā)的基于Linux平臺的開源手機(jī)操作系統(tǒng),它包括操作系統(tǒng)、用戶界面和應(yīng)用程序 移動工作所需的全部軟件,而且不存在任何以往阻礙
4、移動產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙。Java是Sun公司發(fā)發(fā)布的面向?qū)ο蟮木幊陶Z言,可移植性高,是現(xiàn)在用的最廣泛的編程語言之一。論文首先介紹了BMI的特點(diǎn),然后在比較幾種常見的智能手機(jī)操作系統(tǒng)的基礎(chǔ)上,對Android的平臺軟件的開發(fā)和設(shè)計(jì)實(shí)現(xiàn)作了相關(guān)介紹。最后用java語言實(shí)現(xiàn)BMI在Android平臺開發(fā)和應(yīng)用,并介紹相應(yīng)的功能。關(guān)鍵詞 嵌入式 BMI android java BMIBMI androidandroid systemsystem basedbased onon softwaresoftware designdesign andand researchresearchAbstract
5、:Abstract: BMI index is based on height, weight, age, and geographic extent, and to determine whether fat, thin, healthy body.Google developed Android as a platform for open source Linux-based mobile phone operating system, which includes the operating system, user interface and applications - requi
6、red for all mobile phone software, but there is no past, the exclusive right to hinder the mobile industry barriers to innovation.Java is Suns company sent object-oriented programming language, portability, high, is now the most widely used programming languages.BMI paper introduces the characterist
7、ics, and then compare several common smart phone operating system, based on the Android platform for software development and related design and implementation were introduced.Finally, BMI java language development and applications in the Android platform, and describes the corresponding function.Ke
8、ywords:Keywords: Embedded BMI android java. . . . 1. 引言很多國家與地區(qū)每年都會為當(dāng)?shù)氐娜丝谧魃砀吆腕w重的統(tǒng)計(jì)。這些統(tǒng)計(jì)數(shù)據(jù),都可以轉(zhuǎn)化成為BMI值,從而再統(tǒng)計(jì)出當(dāng)?shù)厝丝诘腂MI值分布。根據(jù)這個分布,地方健康政府可以推算出當(dāng)?shù)厝丝诘倪^重與過輕指標(biāo)。一般來說,都會采用統(tǒng)計(jì)出來的平均BMI值與其標(biāo)準(zhǔn)差值,再計(jì)算出其常態(tài)分布的最高5%與最低5%作為過重與過輕指標(biāo)。我國在這個方面還沒有引起太大的重視,有的軟件是只是功能單一,沒有相應(yīng)的指導(dǎo)意見。這個軟件就根據(jù)這個缺點(diǎn)并加入一些人性化的建議說明而開發(fā)的。2007年11月5日,Google與其他33家手機(jī)
9、制造商(包含摩托羅拉、宏達(dá)電、三星、LG)、手機(jī)晶片供應(yīng)商、軟硬體供應(yīng)商、電信業(yè)者所聯(lián)合組成的開放手持裝置聯(lián)盟(Open HandsetAlliance),發(fā)布了名為Android的開放手機(jī)軟硬體平臺。參與開放手持裝置聯(lián)盟的這些廠商,都會基于Android平臺,來開發(fā)新的手機(jī)業(yè)務(wù)。2008年9月24日,T-Mobile首度公布第一臺Android手機(jī)(G1)的細(xì)節(jié),同日Google也釋出了Andorid SDK 1.0 rc1。對應(yīng)用程式開發(fā)者而言,1.0代表了開發(fā)者可以放心地使用API,而不必再擔(dān)心API有太大的變動。G1在同年10月20正式發(fā)售。在發(fā)售前僅針對原T-Mobile用戶的預(yù)購活
10、動中,已經(jīng)被預(yù)購了150萬臺。在10月21日,Open Handset Alliance公開了全部Android的原始碼。從此,開發(fā)者擁有了一個完全開放的手機(jī)平臺。截止目前已經(jīng)有多款使用Android的智能手機(jī),超過8萬的應(yīng)用程序。在不到兩年時間的發(fā)展中,美國市場研究公司NPD 2010年發(fā)布的統(tǒng)計(jì)數(shù)據(jù)顯示,第一季度期間,Android手機(jī)在美國市場的銷量已超過iPhone,占據(jù)該季度美國智能手機(jī)總銷量的28%,iPhone相應(yīng)的份額為21%。2. Android 操作系統(tǒng)簡介Android是基于Linux核的操作系統(tǒng),早期由Google開發(fā),后由開放手機(jī)聯(lián)盟開發(fā)。它采用了軟件堆層的架構(gòu),主要
11、分為三部分。底層以Linux核工作為基礎(chǔ),只提供基本功能;其他的應(yīng)用軟件則由各公司自行開發(fā),以Java作為編寫程序的一部分。另外,為了推廣此技術(shù),Google和其它幾十個手機(jī)公司建立了開放手機(jī)聯(lián)盟。目前最新版本為Android3.0。2.1 幾種智能手機(jī)系統(tǒng)的比較手機(jī)操作系統(tǒng)一般只應(yīng)用在高端智能化手機(jī)上。目前,在智能手機(jī)市場上,中國市場仍以個人信息管理型手機(jī)為主,隨著更多廠商的加入,整體市場的競爭已經(jīng)開始 呈現(xiàn)出分散化的態(tài)勢。從市場容. . . . 量、競爭狀態(tài)和應(yīng)用狀況上來看,整個市場仍處于啟動階段。目前應(yīng)用在手機(jī)上的操作系統(tǒng)主要有PalmOS、Symbian、Windows mobile、
12、Linux 和iPhoneOS、黑莓六種。 1. PalmOS這是一種32位的嵌入式操作系統(tǒng),主要運(yùn)用于移動終端上。此系統(tǒng)最初由3Com公司的Palm Computing部開發(fā),目前Palm Computing已經(jīng)獨(dú)立成一家公司。Palm OS與同步軟件HotSync結(jié)合可以使移動終端與電腦上的信息實(shí)現(xiàn)同步,把臺式機(jī)的功能擴(kuò)展到了移動設(shè)備上。Palm OS操作系統(tǒng)由Palm公司自行開發(fā)的,并授權(quán)給Handspring、索尼和高通等設(shè)備廠家,這種操作系統(tǒng)更傾向于PDA的操作系統(tǒng)。2. SymbianSymbian是一個實(shí)時性、多任務(wù)的純32 位操作系統(tǒng),具有功耗低、存占用少等特點(diǎn),非常適合手機(jī)等
13、移動設(shè)備使用,經(jīng)過不斷完善,可以支持GPRS、藍(lán)牙、SyncML、以與3G技術(shù)。最重要的是它是一個標(biāo)準(zhǔn)化的開放式平臺,任何人都可以為支持Symbian的設(shè)備開發(fā)軟件。與微軟產(chǎn)品不同的是,Symbian將移動設(shè)備的通用技術(shù),也就是操作系統(tǒng)的核,與圖形用戶界面技術(shù)分開,能很好的適應(yīng)不同方式輸入的平臺,也可以使廠商可以為自己的產(chǎn)品制作更加友好的操作界面,符合個性化的潮流,這也是用戶能見到不同樣子的symbian系統(tǒng)的主要原因。現(xiàn)在為這個平臺開發(fā)的java 程序已經(jīng)開始在互聯(lián)網(wǎng)上盛行。用戶可以通過安裝這些軟件,擴(kuò)展手機(jī)功能。3. Windows mobileWindows Mobile系統(tǒng)包括 Poc
14、ket PC和Smartphone以與Media Centers,Pocket PC針對無線PDA,Smartphone專為手機(jī),已有多個來自IT業(yè)的新手機(jī)廠商使用,增長率較快。按照微軟官方的說法:“Windows Mobile將熟悉的Windows體驗(yàn)擴(kuò)展到了移動環(huán)境中,所以您可以立即使用它投入工作。 ”4. LinuxLinux系統(tǒng)是一個源代碼開放的操作系統(tǒng),目前已經(jīng)有很多版本流行。但尚未得到較廣泛的支持。Linux進(jìn)入到移動終端操作系統(tǒng)近二年多時間,就以其開放源代碼的優(yōu)勢吸引了越來越多的終端 廠商和運(yùn)營商對它的關(guān)注,包括摩托羅拉和NTT DoCoMo等知名的廠商。已經(jīng)開發(fā)出的基于Linu
15、x的手機(jī)有摩托羅拉的A760、A768、CEC的e2800、三星的i519 等。2004 年6 月在日本東京BIG SIGHT 展覽館舉辦的“LinuxWorld Expo/Tokyo 2004”博覽會上,日本手機(jī)大廠商N(yùn)EC則展示了其采用Linux 操作系統(tǒng)的手機(jī)。我國的大唐電信也于7月宣布將Linux作為其TD-SCDMA 3G手機(jī)操作系統(tǒng)。. . . . 3 / 31Linux與其它操作系統(tǒng)相比是個后來者,但Linux具有二個其它操作系統(tǒng)無法比擬的優(yōu)勢。 其一,Linux具有開放的源代碼,能夠大大降低成本。其二,既滿足了手機(jī)制造商根據(jù)實(shí)際情況有針對性地開發(fā)自己的Linux手機(jī)操作系統(tǒng)的要
16、求,又吸引 了眾多軟件開發(fā)商對容應(yīng)用軟件的開發(fā),豐富了第三方應(yīng)用。然而Linux操作系統(tǒng)有其先天的不足:入門難度高、熟悉其開發(fā)環(huán)境的工程師少、集成開發(fā)環(huán)境 較差;由于微軟PC操作系統(tǒng)源代碼的不公開,基于Linux的產(chǎn)品與PC的連接性較差;盡管目前從事Linux操作系統(tǒng)開發(fā)的公司數(shù)量較多,但真正具有很強(qiáng)開發(fā)實(shí)力的公司卻很少,而且這些公司之間是相互獨(dú)立的開發(fā),很難實(shí)現(xiàn)更大的技術(shù)突破。5. iPhone OSiPhone OS或 OS XiPhone是由蘋果公司為iPhone開發(fā)的操作系統(tǒng)。它主要是給iPhone和iPodtouch 使用。就像其基于的Mac OSX操作系統(tǒng)一樣,它也是以Darwin
17、為基礎(chǔ)的。iPhoneOS的系統(tǒng)架構(gòu)分為四個層次:核心操作系統(tǒng)層(theCore OSlayer) ,核心服務(wù)層(the Core Serviceslayer) ,媒體層(the Media layer) ,可輕觸層(theCocoa Touchlayer) 。6. BlackBerry“黑莓”BlackBerry是美國市場占有率第一的智能手機(jī),這得益于它的制造商RIM(Research in Motion)較早地進(jìn)入移動市場并且開發(fā)出適應(yīng)美國市場的系統(tǒng)。大家都知道BlackBerry的經(jīng)典設(shè)計(jì)就是寬大的屏幕和便于輸入的QWERTY鍵盤,所以BlackBerry一直是移動電郵的巨無霸。黑莓機(jī)的
18、另一個特色,就是建多款實(shí)時通訊軟件,包括BlackBerryMessenger、Google Talk與Yahoo Messenger,不過目前只能用英文做溝通,軟件仍不支持對中文字體的顯示。正因?yàn)槭钦y(tǒng)的商務(wù)機(jī),所以它在多媒體播放方面的功能非常孱弱,也許它在未來應(yīng)該著力改善這個弱點(diǎn),因?yàn)槭謾C(jī)功能的整合是大勢所趨,人們不會只滿足于單一的功能。2.2 Android 的體系結(jié)構(gòu)與設(shè)計(jì)實(shí)現(xiàn)2.2.1 Android 體系結(jié)構(gòu)簡介Android平臺是一組面向移動設(shè)備的軟件包,它包含了一個操作系統(tǒng)、中間件和關(guān)鍵應(yīng)用程序。開發(fā)人員可以使用Android SDK(軟件開發(fā)工具包)為這個平臺創(chuàng)造應(yīng)用程序。應(yīng)
19、用程序使用Java語言編寫并在Dalvik之運(yùn)行。Dalvik是一款量身定制的虛擬機(jī),它專為嵌入式應(yīng)用設(shè)計(jì),運(yùn)行在Linux核上層。2.2.2 Android 架構(gòu)下圖顯示了 Android 操作系統(tǒng)的主要組件。. . . . 圖 2.1 Android 操作系統(tǒng)的主要組件2.3.3Linux Kernel(Linux 核)Android依賴Linux2.6版,提供核心系統(tǒng)服務(wù):安全、存管理、進(jìn)程管理、網(wǎng)絡(luò)組、驅(qū)動模型。核部分還相當(dāng)于一個介于硬件層和系統(tǒng)中其他軟件組之間的一個抽象層次。2.3.4 Application Frameworks(應(yīng)用框架)Android的核心應(yīng)用程序就是依賴框架層
20、次API開發(fā)的,程序員們可以充分使用這些API。應(yīng)用架構(gòu)設(shè)計(jì)的初衷是:簡化組件復(fù)用機(jī)制;任何應(yīng)用都能發(fā)布自己的功能,這些功能又可以被任何其他應(yīng)用使用(當(dāng)然要受來自框架的強(qiáng)制安全規(guī)的約束) 。和復(fù)用機(jī)制一樣,框架允許組件的更換。2.2.5 Libraries(庫)Android包含一套C/C+庫,Android系統(tǒng)的各式組件都在使用。這些功能通過Android應(yīng)用框架暴露給開發(fā)人員。Android的核心類庫提供Java類庫所提供的絕大部分功能。每個Android應(yīng)用都運(yùn)行在自己的進(jìn)程上,享有Dalvik虛擬機(jī)為它分配的專有實(shí)例。為了支持多個虛擬機(jī)在同一個設(shè)備上高效運(yùn)行,Dalvik被改寫過。 D
21、alvik虛擬機(jī)執(zhí)行的是Dalvik格式的可執(zhí)行文件(.dex)該格式經(jīng)過優(yōu)化,以降低存耗用到最低。Java編譯器將Java源文件轉(zhuǎn)為class文件,class文件又被置的dx工具轉(zhuǎn)化為dex格式文件,這種文件在Dalvik虛擬機(jī)上注冊并運(yùn)行。在一些底層功能比如線程和低存管理方面,. . . . 5 / 31Dalvik虛擬機(jī)是依賴Linux核的。2.2.6 Applications(應(yīng)用)Android將預(yù)裝一組核心應(yīng)用程序,包括email客戶端、短信服務(wù)、日歷日程、地圖服務(wù)、瀏覽器、聯(lián)系人和其他應(yīng)用程序。所有應(yīng)用程序都是Java編程語言編寫的。3. 搭建 Android 開發(fā)環(huán)境3.1 系
22、統(tǒng)需求編寫Android的應(yīng)用程序,需要一套個人電腦系統(tǒng)。至于操作系統(tǒng)的部份,幾個主流操作系統(tǒng)都有支持。支持的操作系統(tǒng)如下: Windows XP 、Vista或Windows 7 Mac OS X 10.4.8 或之后版本(適用x86 架構(gòu)的Intel Mac) Linux(官方于 Ubuntu 6.10 Dapper Drake 上測試)3.2 安裝相應(yīng)的開發(fā)工具3.2.1 下載 Eclipse首先需要下載Android開發(fā)時會用到的整合開發(fā)環(huán)境Eclipse。目前Android應(yīng)用程序只支持使用Java程式語言來編寫Android應(yīng)用程式。所以開發(fā)前必須先安裝Java 開發(fā)套件(Java
23、 Development Kit, JDK)。各平臺的JDK可至java.sun./下載。Mac OS X作業(yè)系統(tǒng)則已建JDK。安裝好JDK后,可以前往Eclipse下載Eclipse這個方便的整合開發(fā)環(huán)境。下載Eclipse時可以選Eclipse IDE for Java Developers或Eclipse IDE for Java EEDevelopers這兩種版本,只有這兩種版本才會預(yù)裝Eclipse JDT擴(kuò)充套件。我選擇的是Eclipse IDE for Java Developers版本。下載完同樣先解壓縮到適當(dāng)目錄下。3.2.2 安裝 EclipseEclipse不需要安裝,只
24、要確認(rèn)你的系統(tǒng)上有安裝Java,即可直接開啟Eclipse資料夾,點(diǎn)擊Eclipse 開始執(zhí)行Eclipse整合開發(fā)環(huán)境。第一次啟動Eclipse時會彈出視窗讓你決定預(yù)設(shè)的工作目錄。一般使用Eclipse預(yù)設(shè)的工作目錄即可。進(jìn)入到EclipseIDE后,就能安裝Android開發(fā)工具擴(kuò)充套件。3.2.3 安裝 ADT 擴(kuò)充套件在Eclipse上安裝Android開發(fā)工具(ADT)。. . . . 我采用的是離線安裝,前往developer.android./sdk/adt_download.html,手動下載最新的開發(fā)工具版本來離線安裝。下載完最新的ADT擴(kuò)充套件后,打開Eclipse開發(fā)環(huán)境
25、,找到屏幕上方的選單列,選擇Help-Software Updates選項(xiàng),這選項(xiàng)會帶出一個新視窗。選擇Available Software標(biāo)簽,選擇右方的Add Site.(新增)按鈕,會彈出一個輸入框。選擇右上角的Local.按鈕,并選取剛下載的Android最新開發(fā)工具檔案,選到之后按下OK按鈕離開。在視窗中全選新出現(xiàn)項(xiàng)目的所有選項(xiàng)后,按下右方的Install按鈕。Eclipse會花一點(diǎn)時間開始安裝ADT 擴(kuò)充套件。3.2.4 下載并設(shè)定 Android SDK到google官網(wǎng)上下載最新版本的Android SDK并解壓。打開偏好設(shè)定頁面(Preference),選擇Android標(biāo)簽
26、(請確認(rèn)您已安裝好ADT擴(kuò)充套件,Android標(biāo)簽才會出現(xiàn)在偏好設(shè)定頁面中),在SDK Location欄位按下Browse.鍵,選擇剛剛解壓縮完的android_sdk文件夾所在地,然后按下視窗右下角的應(yīng)用(Apply)按鈕。這樣一來,Android SDK就算是設(shè)定好啦。設(shè)定好 Android SDK 后,就擁有了一個完整的 Android 開發(fā)環(huán)境。4. 程序開發(fā)4.1 創(chuàng)建名為 BMI 的工程選擇File-New-Project,會彈出New Project對話視窗,將新工程名稱命名為BMI。在容欄里,選擇在工作區(qū)域中建立新工程(Create new project in works
27、pace)。對New Android Project對話框中相應(yīng)的屬性中填入以下的值:名稱 值Project Name BMIApplication Name BMIPackage Name .demo.android.bmiCreate Activity BmiMin SDK Version 3填好值后按下Finish按鈕,就建立好新工程了。4.2 實(shí)現(xiàn)相應(yīng)的功能在 Android 開發(fā) java 程序時需要劃分成各種功能模塊來進(jìn)行相應(yīng)的開發(fā)。. . . . 7 / 314.2.1 設(shè)計(jì)使用者界面先打開res/layout/main.xml。定義一個基本 BMI 程序所需的身高(Height
28、)輸入欄位,就會用到 EditText,與 TextView 界面元件,其描述如下:1 6 可以看到EditText界面元件描述的基本的組成與TextView界面元件相似,都用到了android:layout_width與android:layout_height屬性。另外,指定的另外兩個屬性android:numeric、android:text則是EditText界面元件的特別屬性。android:text屬性是繼承自TextView界面元件的屬性。將android:numeric 指定為integer,可以限制使用者只能在EditText文字欄位中輸入整數(shù)數(shù)字。android:text屬
29、性則是指定EditText界面元件預(yù)設(shè)顯示的文字(數(shù)字)。再來看看Button(按鈕)界面元件Button界面元件同樣有android:layout_width與android:layout_height屬性,另外一個android:text屬性則用來顯示按鈕上的文字。. . . . 完整的main.xml界面描述檔如下:. . . . 9 / 31可以啟動模擬器檢視執(zhí)行結(jié)果。或是在頁面標(biāo)簽下選擇Layout標(biāo)簽,來預(yù)覽頁面配置。4.2.2 將字串抽離 XML打開 res/values/strings.xml。原始的容為BMI里面只定義了一個字串a(chǎn)pp_name,用來表示應(yīng)用程式名稱。會看到表
30、示字串的格式為文字?jǐn)⑹鰧⑶懊娴臄⑹龀槿〕鰜?,整理進(jìn)strings.xml文件。完整的strings.xml文件如下:BMI身高(cm)體重(kg)計(jì)算BMI 你的BMI 值是在strings.xml文件中,在原本的app_name字串外,自行定義了另外幾個字串。如果再次開啟R.java 檔,會發(fā)現(xiàn)文件中的string類別中也自動索引了上面定義好的字串:public static final class string public static final int app_name=0 x7f040000;public static final int bmi_btn=0 x7f040003;p
31、ublic static final int bmi_result=0 x7f040004;public static final int height=0 x7f040001;public static final int weight=0 x7f040002;. . . . 接著,把這些字串應(yīng)用到之前定義好的XML描述檔中。透過使用string/識別符號這樣存取string類型的格式,來取代main.xml檔案中原本寫死的文字?jǐn)⑹觥M暾某绦虼a如下:. . . . 11 / 31再次運(yùn)行Android模擬器,會看到與前一節(jié)完全一樣的界面。但就界面而言,透過將描述字串統(tǒng)一集中在string.
32、xml中,以后要修改界面時更有彈性了。至此已經(jīng)完成了 BMI 應(yīng)用程序負(fù)責(zé)顯示(View)的部份。圖 4.1、4.2 為界面顯示。圖 4.1 界面顯示 圖 4.2 界面顯示4.2.3 界面功能1.加入按鈕目前的對話框中,并沒有提供離開對話框的方法。所以得按下Undo按鈕來離開對話框,有點(diǎn)不便,所以為這個對話框加入一個確認(rèn)按鈕。.setPositiveButton(確認(rèn), new DialogInterface.OnClickListener()Override. . . . public void onClick(DialogInterface dialog, int which)/ TODO
33、 Auto-generated method stub)2.XmlR存取識別符號:要使用一個介面元件,第一件事就是定義出介面描述檔。大部分的介面元件(如LinearLayout、TextView)不需要在程序中作后續(xù)處理,因此可以直接描述。不過對于那些將在程序中被參考(reference)到的介面元件(如按鈕Button、文字輸入欄位EditText) ,我們需要透過在XML 描述檔中,定義該介面元件的android:id 識別符號屬性。之后在程式中所有與這個介面元件有關(guān)的操作,都能根據(jù)android:id 識別符號來在調(diào)用這個介面元件。android:id屬性的容長得比較特別:+id/hei
34、ghtheight是這個介面元件的android:id。以后的程序中會使用R.id.height來取得這個介面元件。+id的意思是我們可以通過這個識別符號來控制所對應(yīng)的介面元件,R類別會自動配置一個位址給這個介面元件。R類別的容則可以透過查看R.java得知。4.2.4 完成程序相關(guān)代碼BMI值的算法是體重除以身高的平方。用計(jì)算式來表示,就是體重(weight)/(身高(height)*身高(height))src/demo/android/bmi/Bmi.java的代碼:package .demo.android.bmi;import android.app.Activity;import
35、android.app.AlertDialog;import android.content.DialogInterface;import android.content.Intent;import android.content.SharedPreferences;import .Uri;import android.os.Bundle;import android.view.Menu;import android.view.MenuItem;import android.view.View;import android.view.View.OnClickListener;. . . . 1
36、3 / 31import android.widget.Button;import android.widget.EditText;import android.widget.TextView;import android.widget.Toast;public class Bmi extends Activity public static final String PREF = BMI_PREF;public static final String PREF_HEIGHT = BMI_Height; /* Called when the activity is first created.
37、 */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setContentView(R.layout.main); findViews(); restorePrefs(); setListensers(); private Button button_calc; private EditText field_height; private EditText field_weight; private TextView view_result; privat
38、e TextView view_suggest; private void findViews() button_calc = (Button)findViewById(R.id.submit); field_height = (EditText)findViewById(R.id.height); field_weight = (EditText)findViewById(R.id.weight); view_result = (TextView) findViewById(R.id.result); view_suggest = (TextView) findViewById(R.id.s
39、uggest); /not pop virtual input keyboard /field_height.setInputType(InputType.TYPE_NULL); /Listen for button clicks private void setListensers() button_calc.setOnClickListener(calcBMI); private OnClickListener calcBMI = new OnClickListener() public void onClick(View v) /*. . . . DecimalFormat nf = n
40、ew DecimalFormat(0.00); try double height = Double.parseDouble(field_height.getText().toString()/100; double weight = Double.parseDouble(field_weight.getText().toString(); double BMI = weight / (height * height); /Present result view_result.setText(getString(R.string.bmi_result) +nf.format(BMI); /Gi
41、ve health advice view_suggest = (TextView)findViewById(R.id.suggest); if(BMI25) view_suggest.setText(R.string.advice_heavy); else if(BMI25) showNotification(); view_suggest.setText(R.string.advice_heavy); else if(BMI20) view_suggest.setText(R.string.advice_light); else view_suggest.setText(R.string.
42、advice_average);. . . . 19 / 31 定義對話框:程序主功能已經(jīng)完成了,還要要為BMI應(yīng)用程式加上一個選單。選單里面有一個幫助選項(xiàng)。按下幫助選項(xiàng)后,會彈出一個對話框,里面會顯示BMI程序的相關(guān)訊息。所以要產(chǎn)生一個應(yīng)用程式中常見的幫助頁面。應(yīng)用程序的幫助頁面中,通常要包含版本訊息、作者、聯(lián)絡(luò)方式、首頁等資訊。幫助頁面將以彈出對話框的方式表現(xiàn)。所需要做的,是撰寫負(fù)責(zé)處理對話框的openOptionsDialog函式,并將之附加在原本應(yīng)用程序中calcBMI這個按鈕元件的OnClickListener方法上。當(dāng)按下計(jì)算BMI值按鈕時,即彈出對話框。對話框中所能顯示的容千變?nèi)f
43、化。對Android 來說,對話框也是一種顯示容(View)。與一般全頁面顯示的不同之處,在于對話框會重疊顯示到原本的呼叫頁面上,而且在對話框的主要顯示容下方,可能還會再附加上幾個按鈕,用以回到原頁面,或是用來執(zhí)行其他的動作。要在Android程序中呼叫一個對話框,有二個主要步驟:#定義呼叫點(diǎn)#實(shí)作對話框5. 程序功能演示與測試5.1 程序功能測試在開發(fā)環(huán)境eclipse中以Android模式打開上面寫的BMI程序。Android啟動后,我們可以看到其自帶的許多應(yīng)用,我們主要介紹我們的BMI程序。點(diǎn)擊BMI圖標(biāo),進(jìn)入BMI程序。下面的圖片展示了在Android系統(tǒng)的BMI應(yīng)用程序。我們用不同的身高和體重來測試不同BMI值的條件下的BMI報(bào)告
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025至2030年中國十色自動印花機(jī)數(shù)據(jù)監(jiān)測研究報(bào)告
- 金沙酒業(yè)面試題及答案
- 2020-2021學(xué)年廣東省廣州市越秀區(qū)華僑外國語學(xué)校七年級(下)月考數(shù)學(xué)試卷(含答案)
- 合同稅收知識點(diǎn)培訓(xùn)課件
- 會議策劃組織與活動實(shí)施協(xié)議
- 美容行業(yè)客戶信息管理表
- 企業(yè)環(huán)境污染事故處理案例分析
- 電力工程安全與法規(guī)考試卷
- 農(nóng)業(yè)灌溉用水資源合理利用協(xié)議
- 環(huán)境保護(hù)活動設(shè)計(jì)與實(shí)踐案例
- 產(chǎn)學(xué)研合作的模式和成效
- 網(wǎng)絡(luò)營銷:推廣與策劃(第3版 慕課版)課件 項(xiàng)目二制定網(wǎng)絡(luò)營銷戰(zhàn)略(知識基石)
- 云南省情概況
- (滬教牛津版)深圳市小學(xué)1-6年級英語單詞默寫表(英文+中文+默寫)
- 有機(jī)硅柔軟劑配方分析
- 卷煙外在質(zhì)量缺陷圖文標(biāo)準(zhǔn)(判定標(biāo)準(zhǔn))
- 第4章:理賠額和理賠次數(shù)的分布
- 2023高效制冷機(jī)房系統(tǒng)應(yīng)用技術(shù)規(guī)程
- 配電室土建施工方案
- 2021中職 手工制茶 賽賽題(賽項(xiàng)賽題)
- 綜合體弱電智能化系統(tǒng)介紹課件
評論
0/150
提交評論