




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1入 初探 2008年末最大的沖 Android是什 從創(chuàng)意開 安裝Android開發(fā)工 安裝流 開啟現(xiàn)有工 開啟工 導入工 修復工 操作Android模擬 使用Android模擬 列出模擬器類 建立模擬 列出已建立的模擬 移除模擬器場 移除模擬 建立一個Android程 建立新工 初識GUI界 描述使用者界 設計GUI界 視圖 查閱文 離線文 視覺化的界面開發(fā)工 獲取標識 存取識別符 新增XML文 解讀程序流 解讀程序流 完成BMI程 完成BMI程 初 重構(gòu)程 重 初識 加入菜 加入菜單( 定義Android加入新的 獨立的 傳送數(shù)據(jù)到新的 傳送數(shù)據(jù)到新 活動的生命周 生命周 Active(活動 Paused(暫停 Stopped(停止 Dead(已回收或未啟動 信 發(fā)布到市集 AndroidMarket的方 深入淺出12008目前有15億使用者可以透過電腦,在網(wǎng)看到。若使用者也能上網(wǎng),其潛在使用者則可以達到30億。,2007年11月5日與其他33家制造商(包含摩托羅拉、宏達電、三星、)、晶片供應商、軟硬件供應商、電信業(yè)者所聯(lián)合組成的開放手持裝置(OpenHandetAllance),發(fā)布了名為「ndroid」的開放軟硬件平臺。參與開放手持裝置的這些廠商,都會基于Androd平臺,來開發(fā)新機業(yè)務。,緊接著,在Android平臺的一周之后(11月12日),隨即發(fā)布了可以免,能在Windows、MacOSX、Linux多平臺上使用的Android開發(fā)工具(SoftwareDevelopmentKit,SDK)與相關(guān)文件。間隔數(shù)天,又再次發(fā)布操作系統(tǒng)(kernel),與部分驅(qū)動程序的源代碼。一項展示欲將這個現(xiàn)代人的隨身工具推往開放平臺,讓人們可以修改創(chuàng)作出符合自己需求機應用的決心。身為公司創(chuàng)辦人之一的SergeyBrin,也在Android開發(fā)工具(SDK)發(fā)布的同時,現(xiàn)身于視訊影片中,為大眾介紹Android平臺。SergeyBrin也同時宣佈舉辦總獎金高達1000萬(3億多臺幣)的開發(fā)者大獎賽,鼓勵程序開發(fā)者去深入探究Android平臺的能力。寫出具創(chuàng)意、實用性十足、能提供使用者更好機使用經(jīng)驗的應用2008年9月24日,T-Mobile首度第一臺Android(G1)的細節(jié),同日AndoridSDK1.0rc1。對應用程序開發(fā)者而言,1.0代表了開發(fā)者可以放心地使用APIAPIG11020正式發(fā)售。在發(fā)售前僅針對T-Mobile用戶的預購活動中,已經(jīng)被預150萬臺10/21OpenHandsetAlliance公開了全部Android的源代碼。從此,開發(fā)者擁有了一個完全開放機平臺。Android是什在可見的將來,基于Android平臺機程序設計,將像今日的PC程序設計一樣及「Android」是一個基于Linux(kernel)的開放平臺操作系統(tǒng)。與WindowsMobile、Symbian等操作系統(tǒng)處在同一級別。對于設備制造商來說,「ndrodAndrod」操作系統(tǒng)讓設備制造商免除「每出一臺,就得被操作系統(tǒng)廠商(如)收取費用」的情況。對硬體開發(fā)廠商來說,「ndroid」也是個開放的平臺。只要廠商有能力,可以在這個平臺上加入特有的裝置或功能,不受對于手持裝置的開發(fā)者來說,「Android」是個先進的平臺。平臺上的應用程序可相容于各種型號的Androd,免去為各種不同機型開發(fā)的困擾?!窤ndroid」平臺支援各種先進的網(wǎng)路、繪圖、3D處理能力,可以用來提供更好的使用者體驗。對于使用者來說,「ndroid」是一個用于的操作系統(tǒng)。使用者只要先申請一個免費的帳戶,當使用者想換一臺時,就可以在不同廠牌,同樣使用「Androd」操作系統(tǒng)平臺機之間選擇,并且很容易地將如聯(lián)絡簿等轉(zhuǎn)換到新上。Android在Linux的基礎上,提供了各種合用的函式庫,和一個完整的應用程序框架。并采用較符合限制的Apache。在Linux的基礎上提供的應用程序運行環(huán)境(DalvikSunJ2ME不同),并提供基于Eclipse整合開發(fā)環(huán)境(IDE)的免費、跨平臺(Windows、MacOSX、Linux)開發(fā)工具(SDK),便于應用程序免費、熟悉的跨平臺開發(fā)工具,讓具備一些物件導向觀念,或視窗程序開發(fā)經(jīng)驗的開發(fā),在定間內(nèi)手1000萬的大獎賽則提供了足夠的誘因,讓第一支Androd手機正式面市前,就擁有了各式各樣的應用程序可供使用。從不同角度來說,Android代表.一個嶄新的開放源代碼操作系統(tǒng)平臺.一個友善的免費應用程序開發(fā)環(huán)境、.一個與世界各地的程序開發(fā)者,站在相同起跑點上的公平競爭機會未來的最好的方式,就是去創(chuàng)造未你是否曾經(jīng)思考過,當擁有了一臺能夠上網(wǎng),能夠依照自己的期望修改、調(diào)試功能機,會用它來施展什么創(chuàng)意?Androd大獎賽首頁上提供了一些方向。你的心里可能已經(jīng)有了關(guān)于程序的絕好創(chuàng)意,你想在Android開放平臺上,實現(xiàn)因為其他封閉平臺的種種限制,而無法在上達成的需求;無論你以何種目的來看待「Android」平臺,都需要為了達成你的創(chuàng)意,所需的一些基本協(xié)助。本書所提供的內(nèi)容,將可以協(xié)助你快速地理解Android平臺的概念。提供你初次開發(fā) Android資料應用程序的過程,與詳細的Android應用程序?qū)嵗庹f。要開Android應用程序,你甚至不需要擁有實機。已經(jīng)為提供了各個主要平臺(Windows、Mac、Linux)上可用的開發(fā)工具包。開發(fā)工具包中,也包含了Android手機模擬器,好讓在電腦上就能完成所有機應用程序開發(fā)工作。接著,就先來安裝Android開發(fā)工具吧。參考資Android 開放手持裝置(OpenHandsetAlliance) Android開發(fā)者部落格/Android開發(fā)者大賽 Android文件 /pub/a/onlamp/2007...e-CNet m/0,200...Android源代碼Android開發(fā)工AndroidAndroid提供免費而且跨平臺的整合開發(fā)環(huán)境,只要電腦能連接上網(wǎng)路,隨時都能相關(guān)工具下來,并開始開發(fā)Android應用程序。有了輕便易用的開發(fā)工具,可以系統(tǒng)需Android的應用程序,需要一套個人電腦系統(tǒng)。至于操作系統(tǒng)的部份,幾個主流支援的操作系統(tǒng)如下WindowsXPMacOSX10.4.8或之后版本(適用x86架構(gòu)的 Linux(于Ubuntu6.10DapperDrake上測試AndroidJDK5或JDKJava(JDK5JDK6)Java運行環(huán)境(JRE)是不夠的,你需要安裝Java開發(fā)環(huán)境(JDK)。你可以在命令行上輸入「java-versionjava版本(java版本需>1.5)。AndroidJavaGnu(gcj) IDE,一個多用途的開發(fā)工具平臺你可以安裝Eclipse3.3(代號Europa)或3.4(代號Ganymede)版請注意你選擇的版本需包含EclipseJava開發(fā)工具擴充套件(JavaDevelopmentToolPlugin,JDT)。EclipseIDEJDTEclipse平臺不熟悉的話,建議直接選擇「forJavaDevelopers」版本來。ADT,基于EclipseAndroid開發(fā)工具擴充套件(AndroidDevelopmentToolsAndroidSDK,Android程序開發(fā)套件,包含 模擬器(Emulator)其他開發(fā)環(huán)境工具(非必要安裝oLinuxMacApacheAnt16.5WindowsApacheAnt1.7oNetBeans、IDEAAndroid開發(fā)工具,但本書中還是以基于Eclipse平臺的開發(fā)工具為準,其他平臺不予涉及。安裝流JDK5JDK6Android步EclipseADTAndroidSDKAndroid詳細的安裝流程如下Eclipse首先需要Android開發(fā)時會用到的整合開發(fā)環(huán)境Eclipse目前Android應用程序只支援使用「Java」程序語言來編寫Android應用程序。所以開發(fā)前必須先安裝Java開發(fā)套件(JavaDevelopmentKit,JDK)。各平臺的JDK可至 MacOSX操作系統(tǒng)則已內(nèi)建JDK。安裝好JDK后,可以前往Eclipse下載Eclipse這個方便的整合開發(fā)環(huán)境。Eclipse時請選「EclipseIDEforJavaDevelopersEclipseIDEforJavaEEDevelopersEclipseJDT的是「EclipseIDEforJavaDevelopers」版本。完同樣先解壓縮到適當下。安裝點擊Eclipse開始執(zhí)行Eclipse整合開發(fā)環(huán)境。Eclipse時會彈出視窗讓你決定預設的工作。一般使用Eclipse預設的工作到EclipseIDE后,不必急著四處觀望。先來安裝Android開發(fā)ADT擴充套EclipseAndroid(ADT)Eclipse3.4Help->SoftwareUpdates選擇「AvailableSoftware」標題,選擇右方的「AddSite...」(新增)按鈕,會彈出在輸入框中的"Location"欄位中輸入「 按下"OK"按鈕離開。Eclipse會花一點時間尋找合適的版本。如果不行的話可以嘗試使用http:/ /android/eclipse/,有時候https是無法的。在視窗中全選「https:/ 按下「Next」(下一步)鍵。照著步驟就安裝完成。安裝完會提示需重新啟動Eclipse,按下「Yes」重新啟動。Eclipse3.3Help->SoftwareUpdates->FindandInstallSearchfornewfeaturestoinstall(搜尋新功能供安裝)Next(下選擇右上角的「NewRemoteSite」(新增遠端)按鈕,會彈出一個「NewUpdateSite」(新增更新)輸入框。在輸入框中輸入擴充套件的名稱(Name)「ADT」跟(URL)「 FinishEclipse會花一點時間尋找合適的版本。接著要做的,就是等Eclipse顯示出選項時,勾選合適的版本安裝。安裝完會提示需重新啟動Eclipse,按下「OK」重新啟動。離線安裝安裝Android開發(fā)工具。這時可以先前往/sdk/adt_downloadhtml,手動最擇「Help->SoftwareUpdates」選項,這選項會帶出一個新視窗。選擇「AvailableSoftware」標籤,選擇右方的「AddSite...」選擇右上角的「Local...」按鈕,并選取剛的Android開發(fā)工具檔桉,選到之后按下"OK"按鈕離開。在視窗中全選新出現(xiàn)項目的所有選項后,按下右方的「Install」按鈕。Eclipse會花一點時間開始安裝ADT擴充套件。AndroidSDK接著要從/Android 「Android開發(fā)套件」(SoftwareDevelopmentKit,SDK)。下來的SDK檔桉需要先解壓縮。Windows平臺需要先另行安裝解壓縮程序,如免費的7-zip解壓縮工具。解壓縮后會出現(xiàn)一個資料夾。為了之后描述方便,解壓縮后的AndroidSDK檔Android打開偏好設定頁面(Preference),選擇Android(請確認您已安裝好ADT擴充套件,Android標志才會出現(xiàn)在偏好設定頁面中)SDKLocation欄位按下"Browse..."鍵,選擇剛剛解壓縮完的「android_sdk」檔桉夾所在地,然后按下視窗右下角的套用(Apply)按鈕。這樣一來,AndroidSDK就算是設定好啦。SDK1.5ADT擴充套件,才能順利設定新版的AndroidSDK。方法是在螢幕上方的選單列,選擇「Hep>oftwaepdaes」選項,在彈出的視窗上方點選「nstaledoftware」頁面,選擇「Androd」開頭的選項,點選右側(cè)的「Uninsal..」按鈕移除這些相關(guān)的插件。下一設定好AndroidSDK后,就擁有了一個完整的Android開發(fā)環(huán)境。先來看看AndroidSDK中提供的一些范例,Android到底能做些什麼。Eclipse安裝擴充套件/guide/deve...回到Eclipse環(huán)境來。在屏幕上方的選單列上,選擇「File->New->Project會彈出「NewProject」視窗。Eclipse是通用的編輯環(huán)境,可根據(jù)你所安裝的不同擴充套件而支援許多種類的工程。點擊「Android資料夾下AndroidProject」,會開啟「NewAndroidAndroidSDKApiDemos范例。在「NewAndroidProject」。視窗中,點選"Browse..."按鈕以選擇「開啟已經(jīng)存在的工程」(Createprojectfromexistingsource)在此選擇位于「android_sdk/platforms/android-1.5/samples」中的Android應用程序工程(android_sdk/platforms/android-1.5/samples/ApiDemos)。。當選擇了現(xiàn)存的范例程序工程時NewAndroidProject」視窗中的諸如工程名稱(ProjectName)與屬性等內(nèi)容都將被自動填寫好。這時可以按下「Finish」按鈕,完成從現(xiàn)存工程新增工程到Eclipse環(huán)境的動作。導入工 下的警告。因此得用另一個方法:導入工程。在屏幕上方的選單列上,選擇「File->Import」選項,會跳出「Import」視窗。選擇「>ExitingrojctsitoWokSae」項目,然后按ext」按鈕帶到新一個畫面。在「SelectRootirectoy」欄位旁,按下右方的「Broe...」按鈕,選擇對應的工程。選擇好后,按下「inih」(WrSpe)Ecpe修復工ADT內(nèi)建的功能來試著修復。在「PackageExplorerApiDemos」工程檔/guide/tuto...桉夾圖示上點選右鍵,從「AndroidTools」選單中選擇「修復工程屬性」(FixProjectProperties)。(AndroidTools->Fix/guide/tuto...參考資*如何開啟oWorld程序Android模擬器Android已經(jīng)透過「Eclpe」開發(fā)環(huán)境,開啟了「ApDemos」源代碼。本章將講解如何設定和操作Androd模擬器。設定Android「Android開發(fā)套件」(SDK)1.5以上的版本提供了支援不同版本模擬器的功能,在使用模擬器之前,必須先建立一個模擬器后才可在Eclipse開發(fā)環(huán)境中使用。SDK中提供了一個「android」命令行工具(android-sdk/tools中),可以用來建立AndroidAndroid模擬器稱作「Android虛擬機器」(AndroidVirtualDevice),簡寫為「AVD」以作區(qū)別。列出模擬器首先,把「android- 加入系統(tǒng)路徑,以后就可以在任何地方使「android-sdk/tools 在Windows2000,XP,2003這些操作系統(tǒng)里,點選「電腦右鍵>屬性>高>環(huán)境變數(shù)」。在「系統(tǒng)變數(shù)(S)」欄中,選取「PATH」變數(shù)名稱后,再點選「編輯(I)」按再此假設您安裝AndroidSDK的路徑是「androd-sdk\ools」,接著在彈出的視窗中將「;android-sdktoos」(注意要以分號隔開)這字串添在原本的字串之后,按下確定后重新啟動操作系統(tǒng)。執(zhí)行」,在彈出的輸入框中輸入「cmd」,即可開啟命令行工LinuxMac或是您也可以直接打開命令行,進入「android-sdk/tools ,輸入LinuxMac$androidlistAndroidSDK$./androidlist螢幕上會列出所有支援的模擬器類s$androidlistAvailableAndroid sid:Name:Android1.1Type:PlatformAPIlevel:2id:Name:Android1.5Type:PlatformAPIlevel:3id:Name:APIsType:Add-OnVendor:Inc.Description:Android+APIsBasedonAndroid1.5(APIlevel3)com..android.maps(maps.jar)APIfoogleMaps在這邊列出了三種模擬器類型。分別是(id)為1、2的Android1.1、1.5模擬器,(id)為3的「APIs」,把自己提供的應用程序(如Map)放「APIs」這個模擬器類型中,因此要開發(fā)Map等專屬應用程序時就必須先建立3這類型的模擬器,稍后才能在適當?shù)哪M器上作驗證。AndroidSDK1.5模擬器。$androidcreateavd--2--name這段命令的意思是:使用「androidcreateavd」命令來建立一個新的模擬器,「--2」參數(shù)的意思是這個模擬器使用id2的模擬器類型(Android1.5),「--namecupcake」$androidcreateavd--2--namecupcakeAndroid1.5isabasicAndroidplatform.Doyouwishtocreateacustomhardwareprofile[no]CreatedAVD'cupcake'basedonAndroid1.5列出已建立的模擬器在命令行中輸入以下命令$androidlist產(chǎn)生的結(jié)果如下:$androidlistAvailableAndroidVirtualDevices:Name:cupcake:Android1.5(APIlevelSkin:環(huán)境來,設定執(zhí)行應用程序所需的環(huán)境設定環(huán)境參數(shù)程序的環(huán)境參數(shù)。以后使用其他程序?qū)h駮r,也能用同樣的方式,讓這些程序在首先,透過選單列上的「Run」(執(zhí)行)選單,選擇「開啟執(zhí)行參數(shù)設定」(Run->DebugConfigurations...)進入運行環(huán)境參數(shù)設定畫面。進入設定畫面后,在視窗左側(cè)會有一整排Eclipse支援的運行設定,從中找選擇「New」選項后,在「AndroidApplication」項目下方會多出一列執(zhí)行項目??梢栽贜ame欄位上輸入一這個環(huán)境參數(shù)的名稱,在此輸入與專桉名在「Proect」欄位右方,點選「rowse...」按鈕,開啟「選擇」(Proecteecton)視窗,選擇「ApDemos」專桉并點選「OK」按鈕,以選擇要執(zhí)行的工程。LaunchActionLaunchDefaultActivity至此就完成了模擬器環(huán)境參數(shù)的設定。點選右下角的「Debug」按鈕Eclipse就會啟動Android模擬器。小技巧在選單列,也可選擇設「unonfgraon..選項。這得的是一幾Debug」按鈕變成了「un」按鈕?!窪ebug」與「unDebu中會介紹的gdAndroid當設定好之后,以后碰到要再次啟動模擬器的情況時,只要在螢幕左上角「Debug」或「un」圖示右側(cè)小箭頭上按一下,從彈出的選單中選擇剛剛設定的環(huán)境參數(shù)名稱,模擬器即開始執(zhí)行,并安裝好所指定的專桉應用程序。Android切換模擬器場景在命令列上執(zhí)行「androidlists」命令后,可以看到螢幕上列出所有支援的模擬器類型。舉剛才建立過的第二種類型(id2)模擬器為例,列出訊息如下:id:Name:Android1.5Type:PlatformAPIlevel:3Skins:G1,HVGA(default),HVGA-L,HVGA-P,QVGA-L,QVGA-Skins預設有「HVA」與「QVA」兩種畫面配置選項可選擇,「HVA」與「QVA」又可以再各自分為「-L」(andc,橫式)與「-」(porrat直式)。要建立「QVGA」模式的模擬器,則一節(jié)「androidcreateavd」命令后,附加上「--skinQVGA」選項即可。要將預設的「HVGA直式」顯示改為橫式,則可以透過使用快速鍵,切換螢幕Windows操作系統(tǒng)上按下「Ctrl」和「F12」鍵,或是在MacOSX操作系統(tǒng)上同時按下「fn」和「7」鍵,螢幕就會從預設的直式顯示改成橫式顯示,再按一次則切換回原新增模擬器外觀設定Android模擬器的用途,就是協(xié)助在電腦上也能模擬真實的動作。不禁會想,Android除了預設的模擬器外觀之外,以世界第一臺發(fā)Android「T-MobileG1」為例有人已經(jīng)作好了「T-MobileG1」的模擬器外觀??梢郧巴?。到「android_sdk/platforms/android-1.5/skins」下。做完后在命令列中輸入「androidlists」命令,即可發(fā)現(xiàn)id2(Android1.5)列表中的「Skins」項目新增加了「G1」一項(可透過更改名稱來自行命名)。id:Name:Android1.5Type:PlatformAPIlevel:3Skins:G1,HVGA(default),HVGA-L,HVGA-P,QVGA-L,QVGA-要建立使用新模擬器外觀的模擬器,可以在之前命令后加入「--skin」選項。命令$androidcreateavd--2--namedevphone–skin也可以偷懶不用參數(shù)的全名,將參數(shù)用簡寫表示。即用「-t」表示「--」,用-n」表示「--nae」,用「-s」表示「--skn」。改輸入如下:$androidcreateavd-t2-ndevphone–s移除模擬器要移除一個模擬器場景,直接刪除在「androd_sdk/patformandrod-1.5skins」中的對應即可。移除程已經(jīng)順利地啟動了模擬器,那麼,該怎麼移除安裝到模擬器上的程序AndroidSDKadbAndroidDebugger)(sdk/tools中),可以用裡面的s工具連上模擬器來移除應用程序。在某些平臺上,這些動作可能需要擁有root權(quán)限才能執(zhí)行。adb$adb接著切換到 $cdls命令(windowsdir命令)# -11-1120:59rmApiDemos#rmApiDemos.apk#ls$androidlistAvailableAndroidVirtualDevices:Name:cupcake:Android1.5(APIlevelSkin:表示現(xiàn)在系統(tǒng)中有一個名為cupcake的模擬器??梢允褂谩竌ndroiddeleteavd--namecupcake」命令來刪除名稱為「cupcake」的模擬器。$androiddeleteavd--namecupcakeAVD'cupcake'deleted.$androidlistAvailableAndroidVirtual表示系統(tǒng)中已經(jīng)不存在任何模擬器,真的已經(jīng)將模擬器刪除了。閱讀參考模擬器操作細節(jié)/guide/deve...模擬器外 Android程幾章已經(jīng)學到怎麼開啟現(xiàn)有的專桉,也導覽過了整個模擬器的設定流程?,F(xiàn)在從設計一個簡單實用的身高體重指數(shù)計算(M)應用程序開始,學習設計一個ndrod應用程序所需的基礎。BMI身高體重指數(shù)(又稱身體質(zhì)量指數(shù),英文為BodyMassIndex,簡稱BMI)是一值...當需要比較及分析一個人的體重對于不同高度的人所帶來的健康影響時BMI值是一個中立而可靠的指標。簡而言之,要設計的程序就是允許輸入身高體重,按下「計算BMI」鍵后就在螢BMI值,并彈出「你應該節(jié)食」、或「你應該多吃點」...等健康建議。健康建議的判斷:BMI25BMI值低于「20很簡單。畢竟要學習的關(guān)鍵知識,不是在于BMI值的算法或健康建議的內(nèi)容,而是在于Android程序的方式。參考資源身高體重指首先,照前面章節(jié)的教學,建立一個新的程序工程。并將新工程名稱命名為BMI。在「內(nèi)容」欄里,選擇「在工作區(qū)域中建立新專桉」(Createnewprojectinworkspace)。這時,如果在"選擇欄"取消掉勾選「使用預設」(Usedefaultlocation)選項,就可以切換專桉的資料夾。大部分的時候并不需去改動這個選項,而是直接使用預設的資料(Properties)等內(nèi)容都被自動填寫在此對"NewAndroidProject"框中出現(xiàn)的這些欄位作些簡單的說明:名稱描述Project 包含這個項目的資料夾的名稱ApplicationNamePackageName包(Package)名稱,JAVA的是用套件名稱來區(qū)分不同的類別(class)。CreateActivity使否建立這個是項目的主要類別,勾選后可以指定這個類別的名稱。這個類別是一個Activity類別的子類別??梢栽凇窤ctivity」中啟動程序和控制程序流程,Build選擇用來編譯專桉的SDK版本。當選定了Build 在MinSDKVersion欄位中自動填入對應的值MinSDKVersionSDK版本代號。ProjectName:BMIApplicationName:BMIPackageName:com.demo.android.bmiCreateActivity:Bmi填好值后按下「Finish 按鈕,就建立好新工程了注意PackageName必須至少由兩個部分所構(gòu)成,例如com.androdActivityName」是指定用來產(chǎn)生預設javaActivity類別(class)的名稱。依照java語言名,「ActivityName」最好是用開頭大寫的形式。回到Eclipse主畫面,注意到在左側(cè)PackageExplorer視窗中已順利新增加了一 程序工乍看之下,Android插件已幫建立了不少。檢視新建立的BMI檔桉夾中的內(nèi)容,可以將一個Android應用程序基本的檔桉結(jié)構(gòu)歸納成如下:來看看 應用程序的基本檔桉結(jié)構(gòu),以及各自所負責的內(nèi)容src/源代碼srcAndroid應用程序中所需的各個程序碼檔桉。這些檔桉被包在對應package(如本章的BMIsrc中比較關(guān)鍵的程序有Bmi.java這個檔桉的檔名會隨著你在建立一個新的程序?qū)h癞嬅嬷兴钊搿窩reateActivity」欄位值的不同而改變。這是新程序?qū)h裰械闹饕绦騾^(qū)塊。開發(fā)Android程序的多數(shù)時間,都是在src下和Android打交道。gen/自動生成gengenR.javaR.javaADTresXML描述文件、圖像等資源,同步更新修改'R.java'Android程序中都會有以R.java為名的這個檔桉,你完全不需要,也應避免手工修改R.java這個檔桉。R.java中自動產(chǎn)生的「R」類別就像是個字典一樣,包含了使用者界面、圖像、字串等各式的資源與相應的(id)。Android應用程序中很多時候會需要透過R類別調(diào)用資源。編譯時編譯器也會查看這個資源列表,沒有使用到的資源就不會編譯進去,為應res/資源「res」中存放所有程序中用到的資源檔桉。"資源檔桉"指的是資料檔桉,或編譯時會被轉(zhuǎn)換成程序一部分的XML描述檔。Android針對放在「res」下的不同子 內(nèi)容res/中的程序layout/版面配置 「layout 包含所有使用XML格式的界面描述檔「layout」中的XML界面描述檔就像寫網(wǎng)頁時用到的HTML檔桉一樣,螢幕上的版面編排與使用的界面元件。XML界面描述檔描述的內(nèi)容可以是整張螢幕,也可以只JavaXML描述檔來建立使用者界面相對更簡單,架構(gòu)也更清晰,以后時更容易釐清問題。要使用這些界面元件,應透過「R.javaRvalues/參數(shù)值(value)「values」包含所有使用XML格式的參數(shù)值描述可以在此添加一些額外的資源如字串(很常用)、顏色、風格等。使用時也是透過「R」類Android功能「ndroidManfet.xml」是ndrod程序的功能,應用程序在這離列出該工程所提供的功能。當應用程序開啟時,會提供諸如內(nèi)容提供者(onentProider)、處理的資料類型、實際運行的類別、跨應用程序的資訊等等訊息。你可以在此指定你的應用程序會使用到的服務(諸如能路、PS功能等)別(ctiity)時,你也需要先在此這個新增的ctiity類別后,才能順利調(diào)用。參考資Android應用程序的檔桉組織方式與用途/guide/appe...初識GUI界面描述使用者界將一份創(chuàng)意到可執(zhí)行的應用程序,背后需要的是從閱讀與寫作程序碼中累積的經(jīng)驗,并有堅持理念、直到完成的耐心。表達使用者界面可以先用前幾章教的方法設定并執(zhí)行模擬器,看看模擬器后的結(jié)果看到一個文字欄位,上面有一串文字「oWorld,Bmi!」。這就是Android預設由于才剛開始實際接觸到Android應用程序,先從簡單的開始:這一節(jié)中,的目標是將「oWorld,Bmi!」換成別的文字。那么,「oWorld,Bmi!」,這串字串藏在哪里呢?先打開「res/layout/main.xml」<?xmlversion="1.0"encoding="utf-<LinearLayout >android:text="oWorld,原來「oWorld,Bmi!」字串就藏在「res/layout/main.xml」這個檔桉的第10行中。只要簡單地將第10行修改成如下 oWorld,再執(zhí)行一次模擬器,就可以得到一個相似的應用程序,只是內(nèi)文變成了剛剛修改的容,既然找到了 oWorld,Bmi!字 就試著將「android:text屬性值從 ,android:text="哈嘍Android要開始學習Android應用程序確實很簡單吧?不過為了顯示「 oWorld,Bmi」,也用main.xmlXMLAndroidGUI界面都是透過ViewGroup或ViewViewGroup和View是Android平臺上最基本的使用者界面表達單元。可以透過程序直接呼叫的方法,調(diào)用描繪使用者界面,將螢幕上顯示的界面元素,與構(gòu)成應用程序主體的程序邏輯,溷合Android提供的這個較優(yōu)雅的方式,使用XML描述檔,來描述界面元件的組織。講看到的「oWorld,Bmi」就包含在「main.xml」這個檔桉中。接著,就1<?xmlversion="1.0"encoding="utf-XML(ExtensibleMarkupLanguage)樣子當類似網(wǎng)頁所使用的HTML標記語言XML被廣泛地運用在Java程序的設定中是以XML格式描述的。2,612 "線性版面配置"(LinearLayout),使用了兩個「LinearLayout」,來表示一個界面元件的區(qū)塊。后頭的前加上一個「/」符號來表示結(jié)束。"線性版面配置"所指的是包含在「LinearLayout」中,所有元件的配置方式,是將一個接一個元件由上 面接的URL(),表示這個描述檔桉會參照到Android名稱空間提供的定義。所有Android版面配置檔桉的最外層中,都必須包含這個屬性。注意需要兩兩對稱。一「」在一串敘述的前頭,另一個:3-5「」中的敘述被稱為「LinearLayout」的「屬性」。Android應用程序在layout目錄中的,大多數(shù)的屬性前都有一個「android:」前綴。同一個界面元件的屬性之間,是以空白做區(qū)隔,因此事實上你也能將多個屬性寫在同一行。當然,將屬性排成多行更易于閱讀。應該保持這個好。界面元件都有許多共同的屬性,例如界面元件的長,寬度設定屬性。Android界面元件的寬度、長度設定屬性分別叫做「android:layout_width」、「android:layout_height。兩個都設定為「fill_parent」參數(shù)值?!竑ill_parent」如其名,所表達的的意思就是"填滿整個上層元件"。預設LinearLayout界面元件就會充滿整個屏幕空間。界面元件彼此間也會有一些不同的屬性,例如「LinearLayout的「android:orientation」(版面)屬性。在此填入「vertical」(垂直)屬性值,表「android.view.ViewGroup」是各種布局配置(layout)和視圖(View)元件的基礎類別。常見的實現(xiàn)有LinearLayout(線性版面配置)、FrameLayout(框架版面配置)、TableLayout(表格版面配置)、Absoluayout(絕對位置版面配置)、RelativeLayout(相對位置版面配置)等。雖然有這么多種版面配置方式可以選用,但大多數(shù)的應用程序并不需特地去改變預設的第7和11TextView(文字檢視)是看到的第一個熟悉的界面元件。其作用是顯示文字到屏幕上。你可能注意到這個結(jié)尾使用了「/>」符號?!?gt;」符號表示這個XML敘述中沒有內(nèi)文,亦即此界面元件描述中不再包含其他界面元件,也表示這個界面元件就是這個螢幕中最小的組成單元了。第8-10android:text="oWorld,bmi"TextView「android:layout_width」和「android:layout_height」剛剛已經(jīng)學過了,分別代表寬度跟長度?!竌ndroid:layout_width」的「fill_parent」參數(shù)值表示寬度填滿整個上層界面元件(即LinearLayout界面元件)。「android:layout_height」則是用上一個新的參數(shù)值「wrap_content」(包住內(nèi)容),亦即隨著文字欄位行數(shù)的不同而改變這個界面元件的高度。最后的「android:text」屬性則是TextView界面元件的主要屬性,亦即文字欄位中顯示的文字內(nèi)容。至于「@string/o」這段字串所代表的意義,馬上會接著在后面章節(jié)說明。現(xiàn)在已知道是:只要將「android:text」屬性內(nèi)容替換成想要文字,在預覽畫面或在模擬器中就會顯示對應的文字。將以上的XML描述綜合起來,就可以得知「main.xml」想表達的界面就累積起了一些經(jīng)驗,也歸納出了許多應對之道。如著名的MVC(Model-View-Controller)模式。Android為考慮了界面修改問題。Android為了單純化界面修改方式,采用了目前比較流行的解決--即將界面描述部份的程序碼,抽取到程序外部的XML描述文件AndroidTextView所顯示的純文字內(nèi)容。那么...這個經(jīng)驗能不能直接用到BMI應用程序的設計上呢?為了輸入BMI程序所需的身高體重值,大致上需要兩個TextView元件用來提示填入身高體重數(shù)字,另外也需要兩個文字輸入欄位用來填入身高體重數(shù)字。還需要一個按鈕來開始計算,而計算完也需要一個TextView元件來顯示計算結(jié)果。于是初版的BMI應用查閱文話說回來,從哪得知各種可用的界面元件呢?其中一個方法是查閱文件Android文件上找到各種可用界面元件列表/guide/tuto...index.html例如想查看EditText的內(nèi)容,可以點進EditText連結(jié)查看其內(nèi)容/reference/...tText.html你會看到一個詳細地驚人EditTextEditText文字輸入欄位。EditTextTextViewTextView用是提供文字顯示,所以EditTextTextView外,文件中你也可以查找到EditText欄位的一些特殊屬性,如「android:numeric="integer"」(僅允許輸入整數(shù)數(shù)字)、「android:phoneNumber="true(僅允許輸入),或「android:autoLink="all"」(自動將文字轉(zhuǎn)成超連結(jié))。例如要限制EditText中只允許輸入數(shù)字的話,可以在XML描述檔中,透過將EditText的參數(shù)「android:numerictrueEditText離線文當你處于沒有網(wǎng)路連接的情況下時,也可以找到Android文件參考。在 android-sdk后,將之解壓縮,你可以在「android-sdk/docs」 (android_sdk/docs/reference/view-gallery.html),找到一份與線上文件相同的文件參開始設計EditTextTextViewandroid:text="<EditTextEditTextTextView「android:layout_width」與「android:layout_height」屬性。另外,指定的另外兩個屬性「android:numeric」、「android:text」則是EditText界面元件的特別屬性?!竌ndroid:textTextView將「android:numericintegerEditTextButton<Buttonandroid:id="@+id/submit"android:text="計算BMI值"整這就從文件中挑出需要的TextView(文字檢視)、EditText(編輯文字)、Button(LinearLayout<?xmlversion="1.0"encoding="utf-<LinearLayout >android:text="身高(cm)"<EditTextandroid:id="@+id/height"android:text="體重(kg)"<EditTextandroid:id="@+id/weight"<Buttonandroid:id="@+id/submit"android:text="計算BMI值"<TextViewandroid:id="@+id/result"<TextViewandroid:id="@+id/suggest"可以啟動模擬器檢視執(zhí)行結(jié)果?;蚴窃陧?下選擇「Layout 啟動模擬器之后,模擬器畫面上出現(xiàn)了兩個輸入欄位。欄位上方分別標示著「身高(cm)」、「體重(kg)」。在兩個輸入欄位下方,是一個標示著「計算BMI值」的按鈕。當你在欄位中試著輸入文字或數(shù)字(你可以直接用電腦鍵盤輸入,或按著模擬器上的虛擬鍵盤輸入)時,你也會發(fā)現(xiàn),XML描述檔的描述中對兩個EditText欄位所規(guī)定的,欄位中只能輸入數(shù)字。在上面XML描述檔中定義的最后兩個TextView界面元件,由于并未替這兩個界面元件指定「android:text」屬性,所以在螢幕上并未顯示。這兩個界面元件在后面章節(jié)中會派的路高興了沒多久,你發(fā)現(xiàn)按下"計算BMI值"按鈕后,應用程序完全沒反應。這是正常的,因為還沒處理從界面輸入取得身高體重、將數(shù)值導入BMI計算方式、將結(jié)果輸出到螢幕上...等等BMI應用程序的關(guān)鍵內(nèi)容。不過在進入了解程序流程之前,還有一個「android:id」屬性尚未解釋。接著透過講解「android:id」屬性,來進一步了AndroidUI視覺化的界面開發(fā)工發(fā)工具。以后也許ADT會加入完整的GUI拖拉設計工具。但在ADT加入完整的GUI拖拉設計工具之前,已經(jīng)有人寫出來了對應Android的GUIDroidDrawAndroidGUI 來源 獲取標識存取識別在上一章談了XML描述檔中界面元件的各種「androd:」開頭的屬性。要使用一個界面元件,第一件事就是定義出界面描述檔。大部分的界面元件(如inearayout、TextVew)(reernce)到的界面元件(如按鈕Button、文字輸入欄位EditText),需要透過在XML描述檔中,作,都能根據(jù)「android:id」識別符號來在調(diào)用這個界面元件。<EditText 前面章節(jié)提過,寫作時最好將XML描述檔屬性分行列出,以易于閱讀(增加可讀性)。而的范例卻將android:id屬性直接擺在EditText于閱讀的考量。當然你也可以將「android:id」屬性分行列出,或是將「android:id在屬性列表的中間或最后頭,這些作法都是允許的,本書中一律使用將android:id屬性直接擺在界面元件后的寫法?!竓eightandroid:id。以后的程序中會使用「R.id.height」來取得這個界面元件。「@+id的意思是可以通過這個識別符號來控制所對應的界面元件XMLR.java在Android系統(tǒng)中,使用XML來定義UI。但是有些稍微有經(jīng)驗的開發(fā)者可能會有「用XML來描述界面固然方便,但是對于程序來說,直接用XML檔桉是不是太占現(xiàn)在大的多的檔桉空間。解決的方法是Android并不直接使用XML檔桉,而是透過AndroidXML當你建立一個BMI新專桉,打開位于 「R.java/*AUTO-GENERATEDFILE.DONOT*Thisclasswasautomaticallygeneratedbyaapttoolfromtheresourcedataitfound.shouldnotbemodifiedbypackagepublicfinalclassRpublicstaticfinalclassattr}publicstaticfinalclassdrawablepublicstaticfinalint}publicstaticfinalclasslayoutpublicstaticfinalint}publicstaticfinalclassstringpublicstaticfinalint}}在照著前一章新增了XML描述后,再次打開打開「 /demo/android/bmi」目錄下的「R.java」檔,你可以看到如下的程序碼:/*AUTO-GENERATEDFILE.DONOTThisclasswasautomaticallygeneratedbyaapttoolfromtheresourcedataitfound.shouldnotbemodifiedbypackagecom.demo.android.bmi;publicfinalclassR{publicstaticfinalclassattr}publicstaticfinalclassdrawablepublicstaticfinalint}publicstaticfinalclapublicstaticfinalintheight=0x7f050000;publicstaticfinalintresult=0x7f050003;publicstaticfinalintsubmit=0x7f050002;publicstaticfinalintsuggest=0x7f050004;publicstaticfinalintweight=0x7f050001;}publicstaticfinalclasslayoutpublicstaticfinalint}publicstaticfinalclassstringpublicstaticfinalint}}看到在R.java檔桉中,分別有attr(屬性)、drawable(、圖示)、id(識說,開發(fā)工具會根據(jù)XML描述檔中指定的id,生成對應的資源,并自動指定一個位址。文件是這么解釋「R.java」的作用的:Aproject'sR.javafileisanindexintoalltheresourcesdefinedinthefile.Youusethisclassinyoursourcecodeasasortofshort-handwaytorefertoresourcesyou'veincludedinyourproject.Thisisparticularlypowerfulwiththe pletionfeaturesofIDEslikeEclipsebecauseitletsyouquicklyandinteractivelylocatethespecificreferenceyou'relookingTheimportantthingtonoticefornowistheinnerclassnamed"layout",anditsmemberfield"main".TheEclipsepluginnoticedthatyouaddedanewXMLlayoutfileandthenregeneratedthisR.javafile.Asyouaddotherresourcestoyourprojectsyou'llseeR.javachangetokeepup.這樣的語法來為某個界面元件提供識別符號,以供程例如,可以用「@+id/height」來為對應供輸入身高數(shù)字的EditText元件提供將字串當在res資料夾中新增各種一個XML檔桉或是一張時,開發(fā)工具會從res們可以進一步加工的XML描述檔,讓界面更易于。開啟res/values/strings.xml,<?xmlversion="1.0"encoding="utf-<string上面只定義了一個字串「app_name」,用來表示應用程序名稱(在之后講AndroidManifest.xml檔桉時將會用到)。看到表示字串的格式<stringname="strings.xml<?xmlversion="1.0"encoding="utf-<string<stringname="height"<stringname="weight"<stringname="bmi_btn"BMI<stringname="bmi_result"BMI如果再次開啟「R.java」檔,會發(fā)現(xiàn)檔桉中的string類別中也自動索引了上面publicstaticfinalclassstringpublicstaticfinalintapp_name=0x7f040000;publicstaticfinalintbmi_btn=0x7f040003;publicstaticfinalintbmi_result=0x7f040004;publicstaticfinalintheight=0x7f040001;publicstaticfinalintweight=0x7f040002;}號]這樣存取string類型的格式,來取代main.xml檔桉中原本寫死的文字敘述。<?xmlversion="1.0"encoding="utf-<LinearLayoutxmlns:android=http://s ><TextViewandroid:layout_width="fill_parent"<EditTextandroid:id="@+id/height"<EditTextandroid:id="@+id/weight"<Buttonandroid:id="@+id/submit"<TextViewandroid:id="@+id/result"<TextViewandroid:id="@+id/suggest"將描述字串集中在「string.xml」中,以后要修改界面時更有彈性了。至此已經(jīng)完成了BMI應用程序負責「顯示(View)」的部份XML,面都只修改到開發(fā)工具幫產(chǎn)生的檔桉,而事實上所有在「res」,「src/values」中建立自己的文字描述檔桉 算出BMI值后將給予的建議文字,完整的檔桉如下:<?xmlversion="1.0"encoding="utf- name="advice_light">你該多吃 name="advice_average">體型 name="advice_heavy">你該打開「R.java」檔,發(fā)現(xiàn)「advice_light「advice_average」、「advice_heavy」也已整理進「.java那么接下來,就開始進入到了解Android程序流程的部分吧解讀程序流程 下"Bmi.java"檔桉,Eclipse+Android開發(fā)工具已經(jīng)幫預先建立好了基本的程序邏輯。其預1package2importimport5publicclassBmiextendsActivity/**Calledwhentheactivityiscreated.publicvoidonCreate(BundlesavedInstanceState) 13講比起什么都對稱的XML界面描述檔來說,這個以Java程序語言寫成的檔桉雖然程序直接拆開,分成幾個部份來講解這個"Bmi.java"檔桉的內(nèi)容:第1行:package空間的原因是程序一旦擴展到擴展到某個大小,程序中的變數(shù)名稱、方法名稱、類別名稱難免重複,這時就可以將定義的名稱區(qū)隔管理在package下,以避免相互的情形發(fā)生。Java的package設計成與檔桉系統(tǒng)結(jié)構(gòu)相對應,如的package設定是"package 3,4importandroid.app.Activity;importandroid.os.Bundle;程序中預設導入了"android.app.Activity"跟"android.os.Bundle"兩個Package,在所有的Android應用程序中都會用到這兩個Package。"import"(導入)是用作導入馬上將學到這兩個Package的用途。Android支援的Package與標準的Java(j2se)不盡相同。在寫Android應用程序APIPackage續(xù)章節(jié)中也將講解如何透過新增"jar"檔來呼叫額外的Package。完整的API可查閱的package列表 6,13publicclassBmiextendsActivity}第6行開始了程序的主體。其組成是這樣publicclass"Bmi"是這個類別的名稱。"class"則是用作類別關(guān)鍵字。"public"關(guān)鍵字是用來修飾"Bmi"這個類別。表示"Bmi"是個"公開"的類別,可以從package外部取用。"publicclassBmi"后面再加上"extendsActivity"Bmi"這個類別的"Activity"是來自于在第3行剛導入的Package。因此整句話的含意即:"一個公開的Bmi類別。這個Bmi類別繼承了程序開頭導入的Activity類別"。"{}"大括號規(guī)范了一個程序區(qū)塊。大括號中的程序表達的這個程序區(qū)塊的主要內(nèi)容。7/**Calledwhentheactivityiscreated.7/**Java其中的文字內(nèi)容不會被編譯。"/*"敘述后多出來的一個"*"號被視為內(nèi)文。順便提醒一下,Java程序語言中兩個斜線"http://"表示的是單行注解符號。單行注解符號"http://"與多行注解符號"/**/"不同的地方是,只有與"http://"符號的文字才不會被編譯。8-9,12publicvoidonCreate(BundlesavedInstanceState)}第9行開始了這個方法(Method)的主體。其組成publicvoidonCreate(BundlesavedInstanceState)}onreae"是這個方法的名稱。"vod"則是了這個方法的回傳值的型別(type)"publc"關(guān)鍵字是用來修飾"onreae"這個方法。表示"onreae"是個"公開"的方法,可以由bmi類別外部取用。方法的回傳值的型別,即是這個方法的型別。"onCreate"這個方法使用"void"型別,表示"onCreate"這個方法不需回傳值。同時,這個方法傳入了一個名為"saedntanceSae"的"unde"型別參數(shù),"unde"型別正是來自前面所導入的Pakae之一。并不需要知道太多"Bunde"型別或saednsanceSae"實體的細節(jié),只要知道"unde"的內(nèi)容與平臺的體管理有關(guān)。當ndroid應用程序啟動、換到背景等待、關(guān)閉時,都會用到"aednsanceae"這個實體來處理體相關(guān)的事宜。當然,你也可以用其他名稱來代替它。還好"onreae"這個方法都是傳入"undeaedntanceSae"這個參數(shù),寫應用程序時只要正確照規(guī)定傳入即可,你可以不用太去在意它。給對Bundle是什么有的讀者onCreate方法的作用類似(Activity重新初始化)時,會再次呼叫onCreate方法,你就能從savedInstanceState中得到前一次凍結(jié)的狀態(tài)。也可以透過"Bundle"來將這個Activity的內(nèi)容傳到下一個Activity中。之后講ActivityonCreate/onFreeze"{}"onCreate這個程序區(qū)塊的主要publicvoidonCreate(Bundle從前面的講解中,學到了在任何一個Android專桉 的"android.app"分類,都可以找到"Activity.class"這個類別?,F(xiàn)在再深入一些查看"Activity.class"類別。你要做的,只是依照圖示,找到Android工具中的"ReferencedLibraries" ,從"android.app"分類里找到"Activity.class"類別,并按下"Activity.class"類別左側(cè)的三角形圖示,如此即可展開這個類別的屬性/Activity類別的屬性/onCreate(Method)事實上,"onCreate"方法正是每個Activity類別初始化時都會去呼叫的方法。"@"開頭的語句表示裝飾子(decorator)語句,"@Override"語句的作用是告訴程序 個"onCreate"方法。當打開程序時,程序不再使用從"bmi"類別中繼承來的"onCreate"publicvoidonCreate(BundlesavedInstanceState)}講解了整段程序,其含意是"覆寫bmi類別中公開的onCreate方法。這個"onCreate"savedInstanceStateBundle型別參數(shù)。現(xiàn)在來看看"onCreate"方法中包含的程序內(nèi)容。10,11"super"是關(guān)鍵字。代表著這個"Bmi"類別的上層類別(Activity)。"super.onCreate(savedInstanceStateActivityonCreateAndroid將其應用程序的界面稱為視圖(View),而負責控制各種動作行為的程序主體(Controller),則稱為活動(Activity)。因此一個Android應用程序,必定會對應到一個以上的Activity"onCreate"方法則是每個Activity類別初始化時都會去呼叫的方法。事,是保持原本"onCreate"方法預設的動作,然后在其中加入想而Android產(chǎn)生的程序預設卻覆載(@Override)了"Bmi"類別的"onCreate"方法。原本繼承自"ctity"類別的"onreae"方法,其原本內(nèi)容都被覆載掉了。因此想將原本的onreae"方法內(nèi)容保留,并在其中加入的內(nèi)容的話,就要使用super"語句。當程序運行到覆寫的"onreae"方法時,透過super.onreae(aednsanceSae);"語句,會先將原本"ctity"類別中的"onreae"方法執(zhí)行一次,然后再執(zhí)行覆寫的"onreae"方法里面其他的程序內(nèi)容。要執(zhí)行原本的"onreae"方法時,仍然需要提供原本"onreae"方法所需的傳入?yún)?shù)。因此"super.onreae(aedntanceae);"語句中,saedntanceSae"這個參數(shù)傳入原本的"onreae"函式中。"aednsanceae"是在"publcoidonreae(undeaednsanceae)"語句中所的傳入?yún)?shù)。換顯示到一個螢幕上,Activity會呼叫它用來設View"setContentView"方法,并傳入想的XML描述文件。當Activity被啟動并需要顯示到螢幕上時,系統(tǒng)會通知Activity,并根據(jù)的XML文件敘述來描繪出使用者界面。上一章中定義好的res/layout/main.xml描述檔,就是透過這個機制繪出到螢幕上。setContentViewActivity你可能也注意到"setContentView"方法確實是透過"R.layoutmain"來 XML文件描述檔的資源,而不是直接透過res BMI至此,已經(jīng)完成了bmi程序的界面設計,并且理解了了新建立的程序。剩BMI很幸運的是,BMI程序中用到的并不是什么神秘的演算法,你甚至可以透過搜尋引擎package23import4publicclassBmiextendsActivity/**Calledwhentheactivityiscreated.publicvoidonCreate(BundlesavedInstanceState)setContentView(R.layout//ListenforbuttonButtonbutton= privateOnClickListenercalcBMI=new{publicvoidonClick(View{DecimalFormatnf=newEditTextfieldheight=EditTextfieldweight=doubleheight=doubleweight=doubleBMI=weight/(height*result.setText("YourBMIis"+nf.format(BMI));//GivehealthTextViewfieldsuggest=}else 50會學到:導入其他用到的模組、如何取得界面元件、如何對按鈕設定動作。講//Listenforbuttonjava語言所支援的另一種注解方式。Buttonbutton=buttonfindViewById方法,從資源檔中取得對應的界面元件(按"R.id.submit"XML<Button為了確保的型別跟XML描述檔中描述的界面元件型別一致,好使程序正常,"findViewById""(Button)""button"button.setOnClickListener(new"setOnClickListener"是button(按鈕)實體的方法。EditTextfieldheight=EditTextfieldweight=與上面buton的類似,只是改成EdtText實體,透過fndVewyd方法,從資源檔中取得對應的文字欄位元件。這邊取出的是".d.heiht"和".d.weight"文字欄位元件。doubleheight=Double.parseDouble(fieldheight.getText().toString())/100;doubleweight=Double.parseDouble(fieldweight.getText().toString());doubleBMI=weight/(height*height);BMI值的算法是"體重除以身高的平方"體重(weight)/身高(height)*身高(height)這麼看來,上面的程序碼就很清晰了。先從身高欄位(fieldheight)、體重欄位(fieldweight)(double)型態(tài)的變數(shù)BMI來運算的結(jié)果,因此,BMI變數(shù)中了運算出來的實際BMI值。顯示結(jié)BMITextViewresult=為了將結(jié)果顯示到屏幕上,在之前XML定義檔中已經(jīng)預留了一個名為"result"的TextView欄位。在程序碼中,再一個TextView實體,透過findViewById方法,DecimalFormatnf=newDecimalFormat("0.00");result.setText("YourBMIis"+nf.format(BMI));透過java內(nèi)建
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 疾病演變過程
- 關(guān)于各種協(xié)議書范本4篇
- 西交機械設計基礎
- 職工聘用標準合同2篇
- 兒童樂園承包合同4篇
- T/ZHCA 016-2022化妝品舒緩功效評價斑馬魚幼魚中性粒細胞抑制率法
- 2025西安交通工程學院輔導員考試試題及答案
- 2025焦作工貿(mào)職業(yè)學院輔導員考試試題及答案
- 2025福建農(nóng)業(yè)職業(yè)技術(shù)學院輔導員考試試題及答案
- 新生兒標本采集規(guī)范與實施
- 《抽水蓄能電站樞紐布置格局比選專題報告編制規(guī)程 》征求意見稿
- 廣東省深圳市2025年高三年級第二次調(diào)研考試數(shù)學試題(含答案)
- 山東省山東名??荚嚶?lián)盟2025年高三4月高考模擬考試物理試卷+答案
- 供應商維保管理制度
- 行政事業(yè)單位內(nèi)部控制信息系統(tǒng)建設實施方案
- 山東棗莊科技職業(yè)學院棗莊工程技師學院招聘考試真題2024
- 小學網(wǎng)球教學教案網(wǎng)球
- 露天礦安全警示教育
- 制造業(yè)質(zhì)量控制計劃
- 動物防疫面試試題及答案
- 政策傳播與接受-深度研究
評論
0/150
提交評論