版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、Android程序開(kāi)發(fā)初級(jí)教程(一) 開(kāi)始 Hello Android平臺(tái)簡(jiǎn)介令人激動(dòng)的Google手機(jī)操作系統(tǒng)平臺(tái)-Android正式發(fā)布了,這是一個(gè)開(kāi)放源代碼的操作系統(tǒng),內(nèi)核為L(zhǎng)inux. 作為開(kāi)發(fā)者,我們所關(guān)心的是這個(gè)平臺(tái)的架構(gòu)以及所支持的開(kāi)發(fā)語(yǔ)言。下面是這個(gè)平臺(tái)的架構(gòu)模型:這個(gè)平臺(tái)有以下功能:+ Application framework: 可重用的和可替換的組件部分,在這個(gè)層面上,所有的軟件都是平等的。+ Dalvik virtul machine: 一個(gè)基于Linux的虛擬機(jī)。+ Integrated browser: 一個(gè)基于開(kāi)源的WebKit引擎的瀏覽器,在應(yīng)用程序?qū)印? Op
2、timized graphics: 包含一個(gè)自定義的2D圖形庫(kù)和基于OpenGL ES 1.0 標(biāo)準(zhǔn)的3D實(shí)現(xiàn)。+ SQLite: 數(shù)據(jù)庫(kù)+ Media support: 通用的音頻,視頻和對(duì)各種圖片格式的支持(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)+ GSM Telephony: GSM 移動(dòng)網(wǎng)絡(luò), 硬件支持。+ Bluetooth, EDGE, 3G, and WiFi: 都依賴于硬件支持。+ Camera, GPS, compass, and accelerometer: 都依賴于硬件支持。+Rich development environ
3、ment: 包含一套完整的開(kāi)發(fā)工具集,方便跟蹤調(diào)試,內(nèi)存檢測(cè)和性能測(cè)試,而且提供了Eclipse的插件。下面我們就來(lái)親身體驗(yàn)一下Android程序的開(kāi)發(fā)之旅。先介紹一下開(kāi)發(fā)環(huán)境,下面是對(duì)系統(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 3.2, 3.3 (Europa)Android Development Tools
4、plugin (optional)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 or later for Linux and Mac, 1.7 or later for Windows我使用Eclipse 3.3 + JDK 1.6. + Ant 1.7 的組合。還有兩個(gè)重要的就是: Android SDK 以及 Android 用于Eclipse 中
5、的插件。Android SDK 的下載鏈接: /android/如果你是第一次使用這些軟件,請(qǐng)注意安裝順序和設(shè)置好環(huán)境變量。 一般的順序是先安裝 JDK 然后 解壓 ant 壓縮包,然后設(shè)置 java 環(huán)境變量和 ant 環(huán)境變量, 然后是解壓 Android SDK ,再設(shè)置 Android SDK的環(huán)境變量。 總之就是把 JDK, ANT, Android SDK的路徑添加到 path 里。Android for eclipse plug in 在安裝過(guò)程很簡(jiǎn)單,通過(guò)網(wǎng)絡(luò)安裝插件就可以了,這個(gè)是 URL: https:/dl-ssl.google.
6、com/android/eclipse/具體的配置過(guò)程,可以查看:/android/intro/installing.html#otherides以下為一個(gè)hello Android的開(kāi)發(fā)步驟:創(chuàng)建一個(gè)項(xiàng)目:創(chuàng)建一個(gè)新項(xiàng)目是很簡(jiǎn)單的,只要你安裝了Eclipse插件,并且你的Eclipse軟件版本在3.2或3.3,你就可以開(kāi)始開(kāi)發(fā)了。首先, 看一下要?jiǎng)?chuàng)建Hello, World程序從高級(jí)層面上有哪些步驟:1, 通過(guò)File - New - Project 菜單,建立新項(xiàng)目Android Project2, 填寫(xiě)新項(xiàng)目各種參數(shù)。3, 編輯自動(dòng)生成的代碼模板
7、。盡此而已,我們通過(guò)下面的詳細(xì)說(shuō)明來(lái)完成每個(gè)步驟。1,創(chuàng)建一個(gè)新的Android項(xiàng)目啟動(dòng)Eclipse, 選擇File - New - Project 菜單, 如果你安裝好了Android的Eclipse插件,你將會(huì)在彈出的對(duì)話框中看到Android Project 的選項(xiàng)。選擇“Android Project”,點(diǎn)擊Next 按鈕。2, 填寫(xiě)項(xiàng)目的細(xì)節(jié)參數(shù).下面的對(duì)話框需要你輸入與項(xiàng)目有關(guān)的參數(shù):這個(gè)表格中詳細(xì)介紹了每個(gè)參數(shù)的含義:Project Name: 包含這個(gè)項(xiàng)目的文件夾的名稱。Package Name: 包名,遵循JAVA規(guī)范,用包名來(lái)區(qū)分不同的類是很重要的,例子中用到的是com.
8、google.android,你應(yīng)該按照你的計(jì)劃起一個(gè)有別于這個(gè)的路徑的名稱。Activity Name: 這是項(xiàng)目的主類名,這個(gè)類將會(huì)是Android的Activity類的子類。一個(gè)Activity類是一個(gè)簡(jiǎn)單的啟動(dòng)程序和控制程序的類。它可以根據(jù)需要?jiǎng)?chuàng)建界面,但不是必須的。Application Name:一個(gè)易讀的標(biāo)題在你的應(yīng)用程序上。在選擇欄的Use default location 選項(xiàng),允許你選擇一個(gè)已存在的項(xiàng)目。3,編輯自動(dòng)生成的代碼。當(dāng)項(xiàng)目創(chuàng)建后,你剛才創(chuàng)建的HelloAndroid就會(huì)是包含下面的代碼.public class HelloAndroid extends Acti
9、vity/* Called when the activity is first created. */Overridepublic void onCreate(Bundle icicle)super.onCreate(icicle);setContentView(R.layout.main);下面我們開(kāi)始修改它構(gòu)建界面當(dāng)一個(gè)項(xiàng)目建立好以后,最直接的效果,就是在屏幕上顯示一些文本,下面是完成后的代碼,稍后我們?cè)谥鹦薪忉尅ublic class HelloAndroid extends Activity /* Called when the activity is first created.
10、 */Overridepublic void onCreate(Bundle icicle) super.onCreate(icicle);TextView tv = new TextView(this);tv.setText(Hello, Android);setContentView(tv);注意你還需要添加 import android.widget.TextView; 在代碼開(kāi)端處。在Android程序中, 用戶界面是由叫做Views類來(lái)組織的。一個(gè)View可以簡(jiǎn)單理解為可以繪制的對(duì)象,像選擇按鈕,一個(gè)動(dòng)畫(huà),或者一個(gè)文本標(biāo)簽(這個(gè)程序中),這個(gè)顯示文本標(biāo)簽的View子類叫做TextVi
11、ew.如何構(gòu)造一個(gè)TextView:TexiView tv = new TextView(this);TextView的構(gòu)造參數(shù)是Android程序的Context實(shí)例, Context可以控制系統(tǒng)調(diào)用, 它提供了諸如資源解析, 訪問(wèn)數(shù)據(jù)庫(kù)等等。Activity類繼承自Context類,因?yàn)槲覀兊腍elloAndroid 是Activity的子類,所以它也是一個(gè)Context類,所以我們能用this在TextView構(gòu)造中。當(dāng)我們構(gòu)造完TextView后,我們需要告訴它顯示什么:tv.setText(Hello, Android);這個(gè)步驟很簡(jiǎn)單,當(dāng)我們完成了這些步驟以后,最后要把TextVi
12、ew顯示在屏幕上。setContentView(tv);Activity的setContentView()方法指示出系統(tǒng)要用哪個(gè)View作為Activity的界面, 如果一個(gè)Activity類沒(méi)有執(zhí)行這個(gè)方法,將會(huì)沒(méi)有界面并且顯示白屏。在這個(gè)程序中,我們要顯示文本,所以我們傳入已創(chuàng)建好的TextView。好了,程序代碼已經(jīng)寫(xiě)好,下面看看運(yùn)行效果。運(yùn)行代碼: Hello, Android使用Android的Eclipse插件就可以很輕松的運(yùn)行你的程序,選擇Run - Open Run Dialog。你將會(huì)看到下面的對(duì)話框下一步,高亮Android Application 標(biāo)簽, 然后按下左上角的
13、圖標(biāo)(就是像一片紙帶個(gè)小星星那個(gè)),或者直接雙擊Android Application 標(biāo)簽, 你將會(huì)看到一個(gè)新的運(yùn)行項(xiàng)目,名為New_configuration.取一個(gè)可以表意的名稱,比如Hello, Android, 然后通過(guò)Browser按鈕選取你的項(xiàng)目(如果你有很多個(gè)項(xiàng)目在Eclipse中,確保你選擇要運(yùn)行的項(xiàng)目), 然后插件會(huì)自動(dòng)搜索在你的項(xiàng)目中的Activity類并且將所有找到的添加在Activity標(biāo)簽的下拉列表中。我們只有Hello, Android一個(gè)項(xiàng)目,所以它會(huì)作為默認(rèn)選擇。點(diǎn)擊Apply 按鈕,下圖到這里,已經(jīng)完成了,你只需要點(diǎn)擊Run按鈕,然后 Android的模擬器
14、將會(huì)啟動(dòng),你的應(yīng)用程序就會(huì)被顯示出來(lái)。下次繼續(xù)介紹如何把界面的布局用XML表示以及使用命令行進(jìn)行編譯和運(yùn)行Android程序。將界面實(shí)現(xiàn)用XML編排你剛剛完成的Hello, World例子我們稱之為”程序化”的界面編排。意思就是說(shuō)構(gòu)建你的應(yīng)用程序界面是直接使用的源代碼。如果你已經(jīng)完成過(guò)很多界面程序,你大概熟悉像此類的方式是多么脆弱:一個(gè)對(duì)布局小小的修改會(huì)對(duì)源代碼造成很頭疼的事情。如果忘掉與View的緊密結(jié)合,這個(gè)導(dǎo)致代碼出錯(cuò)和浪費(fèi)你的調(diào)試時(shí)間的界面問(wèn)題也會(huì)很簡(jiǎn)單。這就是為什么Android提供了一種可替換的界面構(gòu)建方式: 基于XML的布局文件。最簡(jiǎn)單的解釋這個(gè)概念的方式就是展示一個(gè)例子。我們就
15、用剛才創(chuàng)建的項(xiàng)目來(lái)進(jìn)行演示,達(dá)到相同的界面效果。 AndroidXML布局文件的大體的結(jié)構(gòu)很簡(jiǎn)單。它是一個(gè)標(biāo)簽的樹(shù),任何一個(gè)標(biāo)簽就是View類的名字。在這個(gè)例子中, 它是一個(gè)很簡(jiǎn)單的只有一個(gè)元素的樹(shù),一個(gè) TextView。 你可以使用任何繼承自View類的名字作為標(biāo)簽的名字。包括在你的代碼中自定義的View類。這個(gè)結(jié)構(gòu)可以很容易的構(gòu)建界面,它比你在源代碼中使用的結(jié)構(gòu)和語(yǔ)法更簡(jiǎn)單。這個(gè)模式的設(shè)計(jì)靈感來(lái)自于Web開(kāi)發(fā)。就是可以將界面和應(yīng)用程序邏輯分離的模式。在這個(gè)例子中, 也有些是XML的屬性,下面是他們的含義:屬性含義xmlns:android這是XML命名空間的聲明,它是告訴Android的
16、工具, 你將要涉及到公共的屬性已被定義在XML命名空間。在每一個(gè)Android的布局文件的最外邊的標(biāo)簽必須有這個(gè)屬性。android:layout_width這個(gè)屬性定義了在屏幕上這個(gè)View可用的寬度是多少。android:layout_height這個(gè)屬性定義了在屏幕上這個(gè)View可用的高度是多少。android:text設(shè)置TextView所包含的文本內(nèi)容,當(dāng)前設(shè)置為”Hello, Android”信息以上就是一個(gè)XML布局文件的樣子,但是你需要放在哪里?它要放在你的項(xiàng)目目錄的res/ 文件夾下。 “res”是”resources”的縮寫(xiě),它是存放所有非代碼資源的文件夾,包含象圖片,本地
17、化字符串和XML布局文件。這些Eclipse的插件已經(jīng)給你創(chuàng)建好了,在我們上面的例子中,我們沒(méi)有使用它。在包瀏覽器中,展開(kāi)res目錄的layout. 并且編輯 main.xml, 替換掉那個(gè)文本內(nèi)容,然后保存。現(xiàn)在,在包瀏覽狀態(tài),打開(kāi)在代碼文件夾中名為 R.java的文件, 你將看到下面的內(nèi)容:public final class R public static final class attr ; public static final class drawable public static final int icon=0x7f020000; ; public static final
18、class layout public static final int main=0x7f030000; ; public static final class string public static final int app_name=0x7f040000; ; ; 一個(gè)項(xiàng)目的R.java文件是一個(gè)定義所有資源的索引文件。使用這個(gè)類就像使用一種速記方式來(lái)引用你項(xiàng)目中包含的資源。這個(gè)有點(diǎn)特別的強(qiáng)大像對(duì)于Eclipse這類IDE的代碼編譯特性,因?yàn)樗鼓憧焖俚?,互?dòng)式的定位你正在尋找的特定引用。到目前需要注意的重要事情是叫做”layout”的內(nèi)部類和他的成員變量”main”, 插件會(huì)通知你
19、添加一個(gè)新的XML布局文件,然后從新產(chǎn)生這個(gè)R.java文件,比如你添加了新的資源到你的項(xiàng)目,你將會(huì)看到R.java也相應(yīng)的改變了最后重要的事情是你需要去修改你的HelloAndroid源代碼,去使用新的XML布局你的界面。替換掉編碼式的界面模式。下面是你的新代碼的樣子,你可以看到,代碼變得更加簡(jiǎn)單了。public class HelloAndroid extends Activity Override public void onCreate(Bundle icicle) super.onCreate(icicle); setContentView(R.layout.main); 當(dāng)你做這些
20、改變的時(shí)候,不要僅僅復(fù)制,粘貼到你的代碼中,嘗試去體驗(yàn)R.java的代碼編譯特點(diǎn)。你會(huì)發(fā)現(xiàn)它對(duì)你有很大的幫助。現(xiàn)在完成這些改變以后,你就可以重新運(yùn)行你的程序,然后你會(huì)發(fā)現(xiàn)兩種不同的界面編排方式會(huì)產(chǎn)生同樣的效果。調(diào)試你的項(xiàng)目這個(gè)用于Eclipse中的Android插件作為Eclipse中的調(diào)試器也具有優(yōu)秀的兼容性。要演示這些,讓我們制造一個(gè)bug在代碼中,改變你的HelloAndroid源代碼象下面這樣:public class HelloAndroid extends Activity Override public void onCreate(Bundle icicle) super.onC
21、reate(icicle); Object o = null; o.toString(); setContentView(R.layout.main); 這次簡(jiǎn)單的變化會(huì)引起一個(gè)NullPointerException異常,如果你再次運(yùn)行程序,你將會(huì)看到屏幕要找到什么地方出錯(cuò),需要設(shè)置個(gè)斷點(diǎn)在你源代碼的 “Object o = null;” 行后(你可以雙擊在Eclipse中顯示行數(shù)的左部區(qū)域), 然后選擇 Run - Debug 選擇最后一次的運(yùn)行加載。你的程序?qū)?huì)重起模擬器,但是這個(gè)時(shí)候它會(huì)掛起,當(dāng)它走到你剛才設(shè)置的斷點(diǎn)的時(shí)候,在Eclipse的調(diào)試模式視圖中,它就會(huì)停止在你的代碼處。就像
22、你可以在其他任意程序中做這個(gè)一樣。使用其它的IDE工具創(chuàng)建項(xiàng)目調(diào)試你的項(xiàng)目這個(gè)用于Eclipse中的Android插件作為Eclipse中的調(diào)試器也具有優(yōu)秀的兼容性。要演示這些,讓我們制造一個(gè)bug在代碼中,改變你的HelloAndroid源代碼象下面這樣:public class HelloAndroid extends Activity /* Called when the activity is first created. */ Override public void onCreate(Bundle icicle) super.onCreate(icicle); Object o =
23、 null; o.toString(); setContentView(R.layout.main); 這次簡(jiǎn)單的變化會(huì)引起一個(gè)NullPointerException異常, 如果你再次運(yùn)行程序,你將會(huì)看到下面的屏幕:要找到什么地方出錯(cuò),需要設(shè)置個(gè)斷點(diǎn)在你源代碼的 “Object o = null;” 行后(你可以雙擊在Eclipse中顯示行數(shù)的左部區(qū)域), 然后選擇 Run - Debug 選擇最后一次的運(yùn)行加載。 你的程序?qū)?huì)重起模擬器,但是這個(gè)時(shí)候它會(huì)掛起,當(dāng)它走到你剛才設(shè)置的斷點(diǎn)的時(shí)候,在Eclipse的調(diào)試模式視圖中,它就會(huì)停止在你的代碼處。就像你可以在其他任意程序中做這個(gè)一樣。使用其它的
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度排水溝蓋板抗老化實(shí)驗(yàn)檢測(cè)合同3篇
- 二零二五年度農(nóng)村土地置換與鄉(xiāng)村旅游發(fā)展合同
- 2025年度豬肉冷鏈倉(cāng)儲(chǔ)與運(yùn)輸一體化服務(wù)合同3篇
- 2025年度特色禽類養(yǎng)殖養(yǎng)雞場(chǎng)地租賃及品牌合作合同3篇
- 二零二五年度農(nóng)產(chǎn)品銷(xiāo)售兼職合同3篇
- 二零二五年度醫(yī)療器械包裝設(shè)計(jì)與生產(chǎn)服務(wù)合同3篇
- 2025年度星巴克咖啡店品牌授權(quán)與產(chǎn)品銷(xiāo)售合同3篇
- 2025年度塑料模具設(shè)計(jì)與制造服務(wù)合同范本3篇
- 2024年中國(guó)涂層鋼管市場(chǎng)調(diào)查研究報(bào)告
- 2024年沈陽(yáng)市第七人民醫(yī)院高層次衛(wèi)技人才招聘筆試歷年參考題庫(kù)頻考點(diǎn)附帶答案
- 《CIS企業(yè)形象策劃》課件
- 機(jī)器加盟協(xié)議合同范例
- 2024-2030年中國(guó)油田服務(wù)市場(chǎng)發(fā)展?jié)摿εc前景戰(zhàn)略規(guī)劃分析報(bào)告
- 黑龍江省哈爾濱市道里區(qū)2023-2024學(xué)年八年級(jí)上學(xué)期數(shù)學(xué)期末考試試卷
- 碼頭操作管理制度
- 全過(guò)程造價(jià)咨詢實(shí)施方案
- 藥品運(yùn)送工作指導(dǎo)方案模版(4篇)
- 浙江工業(yè)大學(xué)之江學(xué)院《建筑結(jié)構(gòu)選型》2023-2024學(xué)年第一學(xué)期期末試卷
- 倉(cāng)庫(kù)管理培訓(xùn)課件
- 2024年居間服務(wù)合同:律師事務(wù)所合作與業(yè)務(wù)推廣
- 大型活動(dòng)音響設(shè)備保養(yǎng)方案
評(píng)論
0/150
提交評(píng)論