![手機軟件開發(fā)之Android程序開發(fā)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/7512ab76-6703-4df2-b328-d19fecc36c78/7512ab76-6703-4df2-b328-d19fecc36c781.gif)
![手機軟件開發(fā)之Android程序開發(fā)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/7512ab76-6703-4df2-b328-d19fecc36c78/7512ab76-6703-4df2-b328-d19fecc36c782.gif)
![手機軟件開發(fā)之Android程序開發(fā)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/7512ab76-6703-4df2-b328-d19fecc36c78/7512ab76-6703-4df2-b328-d19fecc36c783.gif)
![手機軟件開發(fā)之Android程序開發(fā)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/7512ab76-6703-4df2-b328-d19fecc36c78/7512ab76-6703-4df2-b328-d19fecc36c784.gif)
![手機軟件開發(fā)之Android程序開發(fā)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2021-12/3/7512ab76-6703-4df2-b328-d19fecc36c78/7512ab76-6703-4df2-b328-d19fecc36c785.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、手機軟件開發(fā)之a(chǎn)ndroid程序開發(fā)1手機軟件的運行環(huán)境1.1概述手機可以被看作袖珍的計算機。它有cpu、存儲器(flash、ram)、輸入輸出設(shè)備(鍵 盤、顯示屏、usb和串口)。它還有一個更重要的i/o設(shè)備,那就是空中接口。手機 通過空中接口協(xié)議(例如gsm、cdma、phs等)和基站通信,既可以傳輸語音、也 可以傳輸數(shù)據(jù)。手機的cpu般不是獨立的芯片,而是基帶處理芯片的一個單元,也稱作cpu核。基 帶處理芯片是手機的核心,它不僅包含cpu核、dsp核這些比較通用的單元,還包含 通信協(xié)議處理單元o通信協(xié)議處理單元和手機協(xié)議軟件一起完成空中接口要求的通信功 能。隨著芯片技術(shù)的不斷發(fā)展,越來越
2、多的外圍電路可以被集成到基帶處理芯片中,例如 bap,即基帶模擬處理器。這樣手機才可能越做越小、越做越便宜。1.2單cpu和雙cpu很多手機只有一個cpu,也就是基帶處理芯片中的cpu核。在這個cpu上既要跑通 信協(xié)議,又要實現(xiàn)用戶界面(稱作ui或mmi) o當然dsp會分擔一些計算量繁重的工 作,例如語音編解碼、安全層的各種算法等。在市場推動下,手機功能在不斷發(fā)展。攝像頭、mp3.藍牙這些功能可以依靠硬件,對 cpu的壓力還不是很大,但jqvq虛擬機、嵌入式瀏覽器等應(yīng)用軟件就會對cpu資源 有較高的要求。單cpu的首要任務(wù)是完成通信協(xié)議。通信協(xié)議軟件有著很精確的定時要求,如果這個 cpu還要
3、兼顧很多應(yīng)用軟件的話,就難免吃力。于是雙cpu手機應(yīng)運而生。顧名思義,雙cpu手機就是有兩個cpu的手機,一個cpu專心把通信協(xié)'議做好,另 個cpu負責ui、java虛擬機、嵌入式瀏覽器等應(yīng)用功能。兩個cpu可以做在一個 芯片里面,也可以分開。市場上的實際情況是,很多手機設(shè)計公司(design house)沒有基帶處理芯片的開發(fā) 能力,他們購買國外公司的手機模塊,自己在外面再加一塊cpu。模塊跑通信協(xié)議, 自己加的cpu跑ui和應(yīng)用軟件,兩者通過串行口通信。很多design house也會購買 國外方案商的開發(fā)板級方案,自己做pcb、軟件上改改ui和外設(shè)驅(qū)動。市場上的智能手機基本上全
4、是雙cpu方案,什么windows ces smartphone windowsmobilex symbian嵌入式linux全是運行在第二塊cpu上的。這些商業(yè)操 作系統(tǒng)無法和無線通信協(xié)議軟件集成到一塊cfu上。雙cpu的手機功能比較多,但 它們一般體積大,耗電多,成本高?,F(xiàn)在市場上的大部分手機還是單cpu的。目前的大部分手機應(yīng)用,例如jovo、brew、wap、郵件、攝像頭、閃存、mp3、藍 牙,在單cpu方案里都能實現(xiàn)。我認為不管3g、4g如何發(fā)展,小巧、實用、低成 本的單cpu方案總會占據(jù)較大的市場份額。微軟在單cpu方案的手機市場還沒有立足 之地,又怎么談的上什么引領(lǐng)方向呢?本文主要
5、介紹單cpu手機,大多數(shù)論述也適用于雙cpu方案的通信cpuo1.3 3g 和 4g3g和4g是指第三代、第四代無線通信技術(shù),對手機而言,它們改進的是空中接口的 效率,空中接口能以更大的帶寬傳送數(shù)據(jù)。通過手機無線上網(wǎng)的速度會更快。這和話音 業(yè)務(wù)、手機應(yīng)用軟件沒有直接的聯(lián)系。當然,手機的嵌入式數(shù)據(jù)業(yè)務(wù)由于更高的帶寬,會產(chǎn)生更多的可能性。不過這些可能性 的實現(xiàn)還是會受到手機輸入慢、顯示屏小等條件的制約。2手機軟件的組成2.1概述手機軟件和pc機軟件一樣從中斷向量表開始,因為比較小,看上去更加清晰。中斷向 量表的第一個跳轉(zhuǎn)指令當然是跳到復(fù)位的處理程序,后面是中斷處理、錯誤處 理的跳 轉(zhuǎn)指令。一上電,
6、手機就跳轉(zhuǎn)到復(fù)位的處理程序,開始檢查內(nèi)存、初始化c運行環(huán)境, 然后創(chuàng)建第一個任務(wù)。這個任務(wù)會按順序創(chuàng)建、啟動其它任務(wù)。絕大多數(shù)手機程序都 是多任務(wù)的,但也有一些小靈通的協(xié)議棧是單任務(wù)的,沒有操作系統(tǒng),它們的主程序輪 流調(diào)用各個軟件模塊的處理程序,模擬多任務(wù)環(huán)境。手機軟件可以粗略地分成啟動模塊、操作系統(tǒng)、協(xié)議棧、數(shù)據(jù)業(yè)務(wù)、本地存儲、驅(qū)動程 序、用戶界面和其它應(yīng)用。啟動模塊前面已經(jīng)說過了,下面簡單介紹其它部分。2.2操作系統(tǒng)操作系統(tǒng)在手機軟件只占很小一部分。它的主要功能就是提供多任務(wù)調(diào)度、通信機制。 有的操作系統(tǒng)會提供動態(tài)內(nèi)存分配,定時函數(shù),但這些都不是必須的。例如需要動態(tài)內(nèi) 存分配的模塊,可以自
7、己管理一個內(nèi)存池,這樣更易于隔離模塊和預(yù)測內(nèi)存需求。大多數(shù)手機的操作系統(tǒng)都是一個很小的內(nèi)核,例如rex、hios等。高通rex的源代碼 連c代碼加匯編也不過一千多行,編譯后不過是2、3k的代碼量。而一般手機軟件有 幾百到上千個源文件、超過一百萬行的代碼。2.3協(xié)議棧協(xié)議棧是手機軟件最復(fù)雜的部分,它的復(fù)雜性在于它和基帶處理芯片的設(shè)計密切相關(guān)。 只有具備芯片設(shè)計能力的企業(yè)才可能開發(fā)協(xié)議棧。協(xié)議棧會使用基帶處理芯片的所有資 源。2.4數(shù)據(jù)業(yè)務(wù)數(shù)據(jù)業(yè)務(wù)主要有兩種:在前一種,手機相當于一個調(diào)制解調(diào)器,pc機通過手機上網(wǎng), 網(wǎng)絡(luò)協(xié)議全在pc機上,手機提供數(shù)據(jù)鏈路。另一種就是嵌入式數(shù)據(jù)業(yè)務(wù),手機內(nèi)部包 含t
8、cp/ip/ppp等協(xié)議,有時還要實現(xiàn)http和嵌入式瀏覽器。2.5本地存儲手機都有本地存儲功能,存儲電話本、短消息、用戶設(shè)定等。一般手機都有一個基于flash 的文件系統(tǒng)。早期的手機存儲是基于eeprom的。2.6驅(qū)動程序硬件驅(qū)動一般指外設(shè)驅(qū)動,不過有的外設(shè)已經(jīng)被集成到基帶處理芯片中了。驅(qū)動程序包 括鍵盤、電源管理模塊、lcd、flash、rtc、串口、usb、sim卡或uim卡、射頻驅(qū)動2.7用戶界面用戶界面(ui)又稱作人機界面(mmi),它負責和用戶的交互,在必要的時候調(diào)用其 它模塊的功能。除了手機的必備功能外,用戶界面也可能包含一些相對獨立的應(yīng)用程序, 例如日程表、游戲等。2.8其它
9、應(yīng)用其它應(yīng)用包括java虛擬機、wap瀏覽器、郵件軟件等,是一些比較大,又相對獨立 的應(yīng)用模塊。基本上講完了。大家肯定看得挺沒意思吧。這些程序和微軟的longhorn metedata有什么關(guān)系呢?手機程序絕大部分是用c語言寫的。但對于做應(yīng)用軟件的程序員要求具備面向?qū)ο?、設(shè)計模式的思維能力,然后用c語言實現(xiàn)岀來。高通的brew就是用c語言硬生生地模仿c+,弄出很多奇怪的宏。一般應(yīng)用軟件的開發(fā)不用這么死板,但對各種軟件設(shè)計方法的了解還是必要的。3手機的核心我術(shù)手機的核心技術(shù)是芯片和協(xié)議棧,兩者是密不可分的。芯片設(shè)計需要協(xié)議棧來驗證,協(xié) 議棧必須充分發(fā)揮出芯片的功能。芯片的cpu核、dsp核都可以
10、買到現(xiàn)成的單元,但 通信協(xié)議部分就需要自己設(shè)計了。手機比較難做好的是耗電量、惡劣信號環(huán)境的性能等。4第三方軟件4.1原理“第三方軟件”這個詞的含義比較寬泛。本文用它來指代不是硬編碼在手機里,而是可 以通過數(shù)據(jù)線或網(wǎng)絡(luò)下載到手機上,可以裝載、運行,也可以刪除的軟件。前面講到的軟件都是完整程序的各個部分。這些部分會被放到一起編譯,產(chǎn)生一個二進 制文件,通過jtag 口(升級時可以用串口)下載到手機的flash中。手機一上電,就 會從指定地址開始運行。這個地址的內(nèi)容就是跳轉(zhuǎn)到復(fù)位處理程序的跳轉(zhuǎn)指令。哈哈, 又講回頭了。第三方軟件是指手機可以通過數(shù)據(jù)線或者網(wǎng)絡(luò)下載一些可執(zhí)行文件到文件系統(tǒng)中。然后 有一
11、個裝載器可以執(zhí)行這些文件。這樣第三方就可以開發(fā)一些應(yīng)用程序,下載到手機中 來擴充手機功能。這些可執(zhí)行文件現(xiàn)在主要有兩種格式:jovo程序和brew程序。jovo程序需要jovq 虛擬機裝載運行。brew程序是一個很奇怪的東西,它實際就是用與編譯手機程序相同 的編譯器編譯出來的目標代碼。這些目標代碼必須是可以重新定位的,即不能包含全局 和靜態(tài)變量。裝載器將程序?qū)?zhí)行權(quán)傳給給brew程序,一種聽上去更安全的說法是調(diào)用brew程 序的入口函數(shù)。這個入口函數(shù)的位置在文件中是固定的。裝載器在調(diào)用brew程序的 入口函數(shù)時會傳入一個地址。通過這個地址,brew程序能夠順藤摸瓜,找到系統(tǒng)提供 的各種api的
12、地址,它通過這些api訪問手機的顯示、通信等功能。java程序基本上是平臺無關(guān)的,針對各種平臺設(shè)計的java虛擬機隔離了平臺的大部分 特性,除了廠家特意提供的一些oem功能。brew程序顯然是平臺相關(guān),換一個cpu, 就不認識原來的目標碼了。4.2其它除了 jovo、brew 夕卜,windows ces smartphones windowsmobile、symbian、嵌入式linux這些商業(yè)操作系統(tǒng)當然可以提供各種創(chuàng)建第三方程序的方法。在 這些環(huán)境寫程序和在pc平臺寫程序很相近,基本上體會不到嵌入式編程的特點,只是屏幕小 一些,輸入麻煩一些。這些第三方軟件不是必需的。手機在3g的市場中只
13、占了一個較小的部分,網(wǎng)絡(luò)是大頭。而第三方軟件相對于手機來說,所占的份額就更小了。程序員有一個嵌入式移動開發(fā)的專欄,總在講這些手機第三方軟件的開發(fā)手機軟件只是嵌入式軟件的一部分。第三方軟件在嵌入式移動開發(fā)中又能占到多少比重呢?5結(jié)束語需要說明:關(guān)于以后的市場究竟以單cpu手機為主,還是以雙cpu手機為主的問題, 我傾向于單cpu手機,但這只是我個人觀點。實際市場會怎么發(fā)展,殊難預(yù)料。對于一個芯片兩個cpu核的方案,從軟件角度看我是很贊成的。將應(yīng)用軟件和協(xié)議軟 件分開,協(xié)議軟件可以更加穩(wěn)定,應(yīng)用軟件可以自由發(fā)展,使用大量在pc環(huán)境已經(jīng)成 熟的技術(shù)。android程序開發(fā)初級教程(一)開始hello
14、 android平臺簡介令人激動的google手機操作系統(tǒng)平臺-android正式發(fā)布了,這是一個開放源代碼的 操作系統(tǒng),內(nèi)核為linux.作為開發(fā)者,我們所關(guān)心的是這個平臺的架構(gòu)以及所支持的開發(fā) 語言。下面是這個平臺的架構(gòu)模型:applicationshomecontactsphonebrowsera尸plication frameworkmanager疇 f 綁viewnotrficationsystemmanagermanner嚴驚詡飛廠瞪需xmpp servicelibrariesandroid runtimesurface manager 1medinsqlitcframeworkc
15、ore librariesopengl|esfreelypewebkitmachinesglssllibc linux kernel齡“dm咯磐flash memorybinder (ipc)driverdriverusb driverkeypad driverwifi driveraudiopowerdriversm anagement這個平臺有以下功能:+ application framework:可重用的和可替換的組件部分,在這個層面上,所有的軟 件都是平等的。+ dalvik virtul machine:個基于 linux 的虛擬機。+ integrated browser: 一個
16、基于開源的webkit引擎的瀏覽器,在應(yīng)用程序?qū)印? optimized graphics:包含一個自定義的2d圖形庫和基于opengl es 1.0標準的 3d實現(xiàn)。+ sqlite:數(shù)據(jù)庫+ media support:通用的音頻,視頻和對各種圖片格式的支持(mpeg4, h.264, mp3,aac, amr, jpg, png, gif)+ gsm telephony: gsm 移動網(wǎng)絡(luò),硬件支持。+ bluetooth, edge, 3g, ond wifi:都依賴于硬件支持。+ camera, gps, compass, and accelerometer:都依賴于硬件支持。+ r
17、ich development environment:包含一套完整的開發(fā)工具集,方便跟蹤調(diào)試,內(nèi)存檢測和性能測試,而且提供了 eclipse的插件。下面我們就來親身體驗一下android程序的開發(fā)之旅。先介紹一下開發(fā)環(huán)境,下面是對系統(tǒng)及相關(guān)軟件的版本要求:操作系統(tǒng):windows xp or vistamac os x 10.4.8 or later (x86 only)linux (tested on linux ubuntu dapper drake)supported development environmentseclipseeclipse 32 3.3 (europa)an dr
18、oid development tools plugin (opti onol)other development environments or idesjdk 5 or jdk 6 (jre alone is not sufficient)not compatible with gnu compiler for java (gcj)apache ant 1.6.5 onoter for linux and mac, 1.7 or later for windows我使用eclipse 3.3 + jdk 1.6. + ant 1.7的組合。還有兩個重要的就是:android sdk 以及a
19、ndroid用于eclipse中的插件。android sdk 的下載鏈接:h卄p:/如果你是第一次使用這些軟件,請注意安裝順序和設(shè)置好環(huán)境變量。一般的順序是先 安裝jdk然后解壓ont壓縮包,然后設(shè)置java環(huán)境變量和ant環(huán)境變量,然后是 解壓an droid sdk,再設(shè)置android sdk的環(huán)境變量??傊褪前裫dk, ant, android sdk的路徑添加到path里。android for eclipse plug in在安裝過程很簡單,通過網(wǎng)絡(luò)安裝插件就可以了,這個是 url: h卄ps:/dl-具體的配置過程,可以查看:h 卄 p: ndroid/intro/insto
20、lling.htnnl#otherides以下為一個hello android的開發(fā)步驟:創(chuàng)建一個項目:創(chuàng)建一個新項目是很簡單的,只要你安裝了 eclipse插件,并且你的eclipse軟件版本在3.2或3.3,你就可以開始開發(fā)了。首先,看一下要創(chuàng)建,hello/ world11程序從高級層面上有哪些步驟:1, 通過 file -> new-> project 菜單,建立新項目“andoid project"2, 填寫新項目各種參數(shù)。3, 編輯自動生成的代碼模板。盡此而已,我們通過下面的詳細說明來完成每個步驟。1, 創(chuàng)建一個新的android項目啟動eclipse,選擇f
21、ile -> new -> project菜單,如果你安裝好了 android的eclipse插件,你將會在彈出的對話框中看到android project"的選項。選擇 t£android project”,點擊 next 按鈕。2,填寫項目的細節(jié)參數(shù).下面的對話框需要你輸入與項目有關(guān)的參數(shù):& new android project x這個表格中詳細介紹了每個參數(shù)的含義:project name:包含這個項目的文件夾的名稱。package name:包名,遵循java規(guī)范,用包名來區(qū)分不同的類是很重要的,例子 中用到的«,com.googl
22、e.ondroid,/你應(yīng)該按照你的計劃起一個有別于這個的路徑的名稱。activity name:這是項目的主類名,這個類將會是android的activity類的子類。一 個activity類是一個簡單的啟動程序和控制程序的類。它可以根據(jù)需要創(chuàng)建界面,但不是必須的。application name:個易讀的標題在你的應(yīng)用程序上。在“選擇欄“的“use default locationh選項,允許你選擇一個已存在的項目。3,編輯自動生成的代碼。當項目創(chuàng)建后,你剛才創(chuàng)建的helloandroid就會是包含下面的代碼.public class helloandroid extends activi
23、ty/* called when the activity is first created. */©overridepublic void oncreate(bundle icicle)super, on create(icicle);setcontentview(ro yout.moin);下面我們開始修改它構(gòu)建界面當一個項目建立好以后,最直接的效果,就是在屏幕上顯示一些文本,下面是完成后的代碼,稍后我們在逐行解釋。public class helloandroid extends activity /* called when the activity is first cre
24、ated. */©overridepublic void oncreate(bundle icicle) super.oncreate(icicle);textview tv = new textview(this);tv.settextf'hello, android");setc on tentview(tv);注意你還需要添加import android.widget.textview;在代碼開端處。在an droid程序中,用戶界面是由叫做views類來組織的。 一個view可以簡單理 解為可以繪制的對象,像選擇按鈕,一個動畫,或者一個文本標簽(這個程序中)
25、,這個顯示文本標簽的view子類叫做textview 如何構(gòu)造一個textview:texiview tv = new textview(this);textview的構(gòu)造參數(shù)是android程序的context實例,context可以控制系統(tǒng)調(diào)用,它提供了諸如資源解析,訪問數(shù)據(jù)庫等等。activity類繼承自context類,因為我們的helloandroid是activity的子類, 所以它也是一個context類,所以我們能用“this“在textview構(gòu)造中。當我們構(gòu)造完textview后,我們需要告訴它顯示什么:tv.settext("helloz android&quo
26、t;);這個步驟很簡單,當我們完成了這些步驟以后,最后要把textview顯示在屏幕上。setc on tentview(tv);activity的setcontentview()法指示出系統(tǒng)要用哪個view作為activity的界面,如 果一個activity類沒有執(zhí)行這個方法,將會沒有界面并且顯示白屏。在這個程序中,我們要 顯示文本,所以我們傳入已創(chuàng)建好的textviewo好了,程序代碼已經(jīng)寫好,下面看看運行效果。運行代碼:hello, android使用android的eclipse插件就可以很輕松的運行你的程序,選擇run -> open rundiolog。你將會看到下面的對話
27、框©android applicatio:apache tomcat ©c/c+ local appl #eclipse applicatior ueclipse data tools 弓 generic server3 gen eric server(ex9 http preview3 j2ee preview 町java applet 廳 java applicatio n jvjunitjvjunit plug-in lest i-jython run &jython unittest 3 osgi framework 2? python coverage 乙
28、 fmhon runi丨fi ter matched 20 of 20create, manage and run configurationsandroid apphcationcon figure launch setti ngs from this dialog: press the 'new1 button io create a configuration of the selected type. 匸 press the duplicate* butt on to copy the selected configurati on.x press the 'delet
29、e1 butt on to remove the selected configuration. :; press the filter4 button to con figure filteri ng options. edit or view an existing configuration by selecting it.con figure lau nch perspective setti ngs from the perspadigs preference page.close下一步,高亮nandroicl application"標簽,然后按下左上角的圖標(就是像一片
30、紙帶個小星星那個),或者直接雙擊"android application'1標簽,你將會看到一個新的運行項目,名為hnew_configuration,create, manage, and run configurationsan droid applicationp g android applicationew_con figurat!9 apache tomcat 宦c/c+ local appl eclipse applicatior 0 eclipse data tools3 generic servergwnenc server!ex3 http preview
31、? j2ee previewhjava applettijava applicatio njujunitju ju nit plug-in test i-jython run jython unittest 出 osgi framework j pvthon coveraae difilter matched 21 of 21name: |newconfigurationbuncluse取一個可以表意的名稱,比如"hello, android1;然后通過browser按鈕選取你的項目 (如果你有很多個項目在eclipse中,確保你選擇要運行的項目),然后插件會自動搜索在你 的項目中的
32、activity類并且將所有找到的添加在"activity"標簽的下拉列表中。我們只有 "hello, android11 一個項目,所以它會作為默認選擇。點擊,apply”按鈕,下圖到這里,已經(jīng)完成了,你只需要點擊rury按鈕,然后android的模擬器將會啟動,你的應(yīng)用程序就會被顯示出來。©©w0kxnm&目6qizqhellor androids .iii cs 10:11 pmhello, android下次繼續(xù)介紹如何把界面的布局用xml表示以及使用命令行進行編譯和運行android 程序。將界面實現(xiàn)用xml編排你剛剛完成的h
33、ello, world'例子我們稱之為”程序化”的界面編排。意思就是 說構(gòu)建你的應(yīng)用程序界面是直接使用的源代碼。如果你已經(jīng)完成過很多界面程 序,你大概熟悉像此類的方式是多么脆弱:一個對布局小小的修改會對源代碼造成很頭疼的事情。如果忘掉與view的緊密結(jié)合,這個導(dǎo)致代碼出錯和浪費你的 調(diào)試時間的界面問題也會很簡單。這就是為什么android提供了一種可替換的界面構(gòu)建方式:基于xml的布局文 件。最簡單的解釋這個概念的方式就是展示一個例子。我們就用剛才創(chuàng)建的項目 來進行演示,達到相同的界面效果。<?xml versionmi.tr encoding=,utf-8,?><t
34、extview xmlnsndroid-'h卄p:/schemqsondroiclcom/opk/es/ondro id"android:layout_width-'fill_parent"android jayoulheight-'tillparent"ondroicktextihello, androidh/>androidxml布局文件的大體的結(jié)構(gòu)很簡單。它是一個標簽的樹,任何一個標簽 就是view類的名字。在這個例子中,它是一個很簡單的只有一個元素的樹,一 個textviewo你可以使用任何繼承自view類的名字作為標簽的名字
35、。包括 在你的代碼中自定義的view類。這個結(jié)構(gòu)可以很容易的構(gòu)建界面,它比你在源 代碼中使用的結(jié)構(gòu)和語法更簡單。這個模式的設(shè)計靈感來自于web開發(fā)。就是 可以將界面和應(yīng)用程序邏輯分離的模式。含義屬性xmln s:android在這個例子中,也有些是xml的屬性,下面是他們的含義:這是xml命名空間的聲明,它是告訴android的工具, 你將要涉及到公共的屬性已被定義在xml命名空間。 在每一個android的布局文件的最外邊的標簽必須有 這個屬性。android:layout_width這個屬性定義了在屏幕上這個view可用的寬度是多 少。android:layout_height這個屬性定義
36、了在屏幕上這個view可用的高度是多 少。an droid:text設(shè)置textview所包含的文本內(nèi)容,當前設(shè)置為” hello, android” 信息以上就是一個xml布局文件的樣子,但是你需要放在哪里?它要放在你的項目 目錄的es/文件夾下。wresm是” resources”的縮寫,它是存放所有非代碼 資源的文件夾,包含象圖片,本地化字符串和xml布局文件。這些eclipse的插件已經(jīng)給你創(chuàng)建好了,在我們上面的例子中,我們沒有使用它。 在包瀏覽器中,展開©目錄的layout.并且編輯moin.xml,替換掉那個文本 內(nèi)容,然后保存?,F(xiàn)在,在包瀏覽狀態(tài),打開在代碼文件夾中名為
37、r.jovo的文件,你將看到下 面的內(nèi)容:public final class r public static final class q卄r ;public static final class drawable public static final int icon=0x7f020000;;public static final class layout public static final int main=0x7f030000;;public static final class string public static finai int app_name=0x7f040000;
38、 ;個項目的r.java文件是一個定義所有資源的索引文件。使用這個類就像使用 一種速記方式來引用你項目中包含的資源。這個有點特別的強大像對于eclipse 這類ide的代碼編譯特性,因為它使你快速的,互動式的定位你正在尋找的特定 引用。到目前需要注意的重要事情是叫做” layout的內(nèi)部類和他的成員變量” mainj, 插件會通知你添加一個新的xml布局文件,然后從新產(chǎn)生這個r.java文件, 比如你添加了新的資源到你的項目,你將會看到r.java也相應(yīng)的改變了最后重要的事情是你需要去修改你的helloandroid源代碼,去使用新的xml 布局你的界面。替換掉編碼式的界面模式。下面是你的新代
39、碼的樣子,你可以看 到,代碼變得更加簡單了。public class helioandroid extends activity ©overridepublic void oncreate(bundle icicle) super, on create(icicle);setco ntentview(royout.moin);當你做這些改變的時候,不要僅僅復(fù)制,粘貼到你的代碼中,嘗試去體驗r.java的代碼編 譯特點。你會發(fā)現(xiàn)它對你有很大的幫助?,F(xiàn)在完成這些改變以后,你就可以重新運行你的程序,然后你會發(fā)現(xiàn)兩種不同的界面編排方 式會產(chǎn)生同樣的效果。調(diào)試你的項目這個用于eclipse中的
40、android插件作為eclipse中的調(diào)試器也具有優(yōu)秀的兼容 性。要演示這些,讓我們制造一個bug在代碼中,改變你的helloandroid源 代碼象下面這樣:public class helloandroid extends activity ©overridepublic void oncreate(bundle icicle) super.oncreate(icicle);object o 二 null;o.tostring();set conten tview(ro yout.moin);這次簡單的變化會引起一個nullpointerexception異常,如果你再次運行程
41、序, 你將會看到屏幕要找到什么地方出錯,需要設(shè)置個斷點在你源代碼的object o二null;” 行后(你可以雙擊在eclipse中顯示行數(shù)的左部區(qū)域),然后選擇run -> debu g選擇最后一次的運行加載。你的程序?qū)仄鹉M器,但是這個時候它會掛 起,當它走到你剛才設(shè)置的斷點的時候,在eclipse的調(diào)試模式視圖中,它就會 停止在你的代碼處。就像你可以在其他任意程序中做這個一樣。使用其它的ide工具創(chuàng)建項目調(diào)試你的項目這個用于eclipse中的android插件作為eclipse中的調(diào)試器也具有優(yōu)秀的兼容 性。要演示這些,讓我們制造一個bug在代碼中,改變你的helloandroid源 代碼象下面這樣:public class helloandroid extends activity /* called when the activity is first created. */©overridepublic void oncreate(bundle icicle) super
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論