版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科畢業(yè)設(shè)計(jì)(論文)</p><p> 題 目: 基于Android的 </p><p> 五子棋游戲設(shè)計(jì) </p><p> 院 系: 計(jì)算機(jī)與信息工程學(xué)院 </p><p> 專業(yè)年級(jí): 2008電子科學(xué)與技術(shù)
2、 </p><p> 學(xué)生姓名: 學(xué)號(hào): </p><p> 指導(dǎo)教師: </p><p> 2012年06月11日</p><p> 基于Android的五子棋游戲設(shè)計(jì)</p><p><b> 摘
3、要</b></p><p> 移動(dòng)互聯(lián)網(wǎng)時(shí)代的到來(lái)極大的改變了我們的生活,而Android是一種以Linux為基礎(chǔ)的開放源碼操作系統(tǒng)迅速占領(lǐng)了智能機(jī)操作系統(tǒng),所以在android環(huán)境下開發(fā)顯得尤為必要。本文詳細(xì)介紹了在Android平臺(tái)上以Java為語(yǔ)言編寫游戲的過(guò)程。五子棋游戲的開發(fā)不僅是一個(gè)簡(jiǎn)單游戲的編寫過(guò)程,更重要的是在系統(tǒng)分析和設(shè)計(jì)階段所做的工作。本文在設(shè)計(jì)過(guò)程中嚴(yán)格遵循軟件工程學(xué)的方法,用
4、分階段的生命周期計(jì)劃嚴(yán)格管理,并主要講述了程序的總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)階段,對(duì)程序進(jìn)行需求迭代,不斷修正和改進(jìn),利用surface重繪等數(shù)據(jù)存儲(chǔ)功能,直到形成一個(gè)完善的可行性系統(tǒng).界面美觀、大方,方便的操作與良好的視覺感應(yīng)共同構(gòu)成了“基于Android平臺(tái)的五子棋游戲設(shè)計(jì)與開發(fā)”的設(shè)計(jì)。</p><p> 關(guān)鍵詞: Android,Java,數(shù)據(jù)存儲(chǔ),軟件工程,五子棋</p><p> T
5、he five in a row game based on Android</p><p><b> Abstract</b></p><p> Arrival of the mobile Internet era has greatly changed our lives, and Android is a Linux-basedopen source ope
6、rating system quickly occupied the smartphone operating system, Android developmentis particularly necessary under the circumstances. This paper focus on a "based on the Android platform of Five in a Row game design
7、 and development" program design and application system develoment issues as the background, introduces in detail in the Android platform to Java language write games for the p</p><p> Key words: Andr
8、oid,java, Data Storage,Software Engineering, Five in a Row</p><p><b> 目 錄</b></p><p><b> 1.緒論5</b></p><p><b> 1.1 背景7</b></p><p&
9、gt; 1.2 課題來(lái)源7</p><p> 1.3 國(guó)內(nèi)外研究現(xiàn)狀8</p><p> 1.4 論文主要工作8</p><p> 2 Android的開發(fā)環(huán)境9</p><p> 2.1 操作系統(tǒng)9</p><p> 2.2 Android開發(fā)環(huán)境9</p><p>
10、 2.3 Android開發(fā)環(huán)境變量配置10</p><p> 2.3.1 jdk的配置10</p><p> 2.3.2 sdk的配置11</p><p> 2.4 eclipse設(shè)置11</p><p> 2.5 Android開發(fā)環(huán)境配置最終步驟12</p><p> 3 Android的架構(gòu)
11、分析12</p><p> 3.1 Android的功能特征12</p><p> 3.2 Android架構(gòu)分析14</p><p> 3.2.1 應(yīng)用程序框架14</p><p> 3.2.2 類庫(kù)15</p><p> 3.2.3 Android運(yùn)行時(shí)的組件16</p><
12、;p> 3.3 Android應(yīng)用的構(gòu)成和工作機(jī)制16</p><p> 4 Android應(yīng)用程序架構(gòu)結(jié)構(gòu)剖析16</p><p> 4.1應(yīng)用程序基礎(chǔ)17</p><p> 4.2 應(yīng)用程序組件17</p><p> 4.2.1 活動(dòng)(Activities)18</p><p> 4.2
13、.2 服務(wù)(Services)20</p><p> 4.2.3 廣播接收者(Broadcast receivers)21</p><p> 4.2.4 內(nèi)容提供者(Content providers)22</p><p> 5 程序的設(shè)計(jì)與實(shí)現(xiàn)22</p><p> 5.1 程序的算法研究:23</p>&l
14、t;p> 5.1.1 棋盤布局的數(shù)據(jù)結(jié)構(gòu)23</p><p> 5.1.2 行棋坐標(biāo)判定24</p><p> 5.1.3 勝負(fù)的判定25</p><p> 5.2 流程設(shè)計(jì)26</p><p> 5.3 游戲的實(shí)現(xiàn):27</p><p> 5.4 改進(jìn)與優(yōu)化29</p>&
15、lt;p><b> 總結(jié)30</b></p><p><b> 參考文獻(xiàn)31</b></p><p><b> 附錄132</b></p><p><b> 1.緒論</b></p><p> 智能手機(jī)(Smartphone),具有獨(dú)
16、立的操作系統(tǒng),像個(gè)人電腦一樣支持用戶自行安裝軟件、游戲等第三方服務(wù)商提供的程序,并通過(guò)此類程序不斷對(duì)手機(jī)的功能進(jìn)行擴(kuò)充,同時(shí)可通過(guò)移動(dòng)通訊網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)無(wú)線網(wǎng)絡(luò)接入。目前,全球多數(shù)手機(jī)廠商都有智能手機(jī)產(chǎn)品,而芬蘭諾基亞、美國(guó)蘋果、加拿大RIM(黑莓)、美國(guó)摩托羅拉、中國(guó)臺(tái)灣宏達(dá)(htc)更是智能機(jī)中的佼佼者。</p><p> 智能手機(jī)具有五大特點(diǎn):1. 具備了無(wú)線接入互聯(lián)網(wǎng)的能力,即要有GSM的支持網(wǎng)絡(luò)下的GPR
17、S或者是CDMA網(wǎng)絡(luò)支持下的CDMA 1X或3G網(wǎng)絡(luò)。2. 人性化,可以根據(jù)個(gè)人需要擴(kuò)展機(jī)器的功能。3. 它是具有開放性的操作系統(tǒng),還可以安裝非常多的應(yīng)用程序,使得智能手機(jī)的功能可以得到無(wú)限的擴(kuò)展。4. 具有PDA功能,其中包括個(gè)人信息管理、日程記事、任務(wù)安排、多媒體應(yīng)用、瀏覽網(wǎng)頁(yè)。5.強(qiáng)大的功能,擴(kuò)展性能強(qiáng),第三方軟件支持多。</p><p> Android的誕生:從時(shí)間要追溯到 二零零三年,在參與到 An
18、droid 的傳奇之前,它的創(chuàng)始人Andy Rubin 在周刊中這么說(shuō)過(guò):“在開發(fā)對(duì)于用戶位置以及狀態(tài)更加敏感的移動(dòng)設(shè)備方面存在著巨大的潛力”,他還說(shuō)過(guò):“很快他們就會(huì)在消費(fèi)類產(chǎn)品中使用?這些位置信息,如果開發(fā)者足夠聰明的話。”現(xiàn)在看起來(lái)他自己都沒想到他的預(yù)言是多么的準(zhǔn)確:實(shí)際上,移動(dòng)領(lǐng)域?qū)?huì)發(fā)生巨變,從而催生出我們從未見過(guò)的強(qiáng)大的智能手機(jī)。到二零零五 年有很多關(guān)于 Google 即將進(jìn)軍移動(dòng)設(shè)備制造領(lǐng)域并專注于制造基于位置服務(wù)的手機(jī)的
19、謠傳,但最大的障礙就在于 Google 沒有自己的可以達(dá)成這個(gè)目標(biāo)的平臺(tái)。</p><p> 在二零零五 年 七月,Google收購(gòu)了 Android,這么一個(gè)小規(guī)模收購(gòu)行動(dòng)還是立刻引起了移動(dòng)業(yè)界的興趣,它們懷疑這是 Google ?進(jìn)入移動(dòng)市場(chǎng)的的標(biāo)志。盡管如此,這個(gè)當(dāng)時(shí)只是一個(gè)小規(guī)模的移動(dòng)軟件開發(fā)公司正是由 ?Andy Rubin、Rich Miner、Nick Sears 以及 Chris White 四
20、個(gè)人共同創(chuàng)建的?,F(xiàn)在看來(lái),他們的懷疑是正確的。差不多兩年半以后,在 二零零七 年 十一 月 五 日,Google發(fā)布了Android,它這個(gè)的發(fā)布給移動(dòng)業(yè)界帶來(lái)了一場(chǎng)可怕的風(fēng)暴,,基于 Linux的全新移動(dòng)操作系統(tǒng)。這不單單是一個(gè)全新的移動(dòng)系統(tǒng),非常重要的是:它是開源的。</p><p> 這是當(dāng)時(shí)新成立的開放手機(jī)聯(lián)盟整合下的成果,諸如 Google、HTC、Intel、Sprint-Nextel、T-Mobi
21、le 以及 NVIDIA 都是這個(gè)聯(lián)盟的成員,該聯(lián)盟的目的就是要?jiǎng)?chuàng)立移動(dòng)設(shè)備的開放標(biāo)準(zhǔn)。第一款搭載 Android 系統(tǒng)的手機(jī)是 2008 年 9 月由 T-Mobile 發(fā)布的 G1,它擁有 GPS 功能,3.1M 攝像頭,以及一系列的 Google 應(yīng)用。G1 的面市,正式拉開了 Google 以及整個(gè)移動(dòng)業(yè)界激動(dòng)人心的大冒險(xiǎn)的序幕。</p><p> Android 操作系統(tǒng)版本</p>&
22、lt;p> Android 1.1 (發(fā)布于 2009 年 2 月)</p><p> Android 1.5 “Cupcake” 這是第一個(gè)主要版本,發(fā)布于 2009 年 5 月.這個(gè)升級(jí)之后,它的更新給用戶帶來(lái)了新的體驗(yàn)。用戶界面得到了極大的改良,并且增添了以下功能。</p><p> Android 1.6 “Donut” 2009 年 9 月發(fā)布。搭載Android 1
23、.6 的 HTC Hero 獲得了意想不到的成功。使得原來(lái)用許多都沒有用過(guò)Android的人都對(duì)Android非常的關(guān)注,并且也讓競(jìng)爭(zhēng)者蘋果和微軟更加警惕了。</p><p> Android 2.0/2.1: 2009 年 10 月 26 日,又一個(gè)主要版本升級(jí)以創(chuàng)紀(jì)錄的速度放出。這次,大版本升級(jí)到了 Android 2.0/2.1 “Eclair.”。</p><p> Andro
24、id 2.0.1 SDK 在 2009 年 12 月 3 日發(fā)布出來(lái),后來(lái)是2010 年 1 月 10 日發(fā)布的2.1 版本。很多圍觀群眾和用戶可能會(huì)有點(diǎn)奇怪:“Android為什么會(huì)被用甜點(diǎn)作為它系統(tǒng)版本的代號(hào)?”,其實(shí)這個(gè)命名方法開始在 Andoird 1.5 發(fā)布出來(lái)的時(shí)候。每一個(gè)版本代表的甜點(diǎn)的尺寸就越變?cè)酱?,然后按照字母的?shù)序:小蛋糕,甜甜圈和松餅。在這之前人們預(yù)計(jì) 2.2 版本的代號(hào)可能是“餡餅”,但這個(gè)最終被證明是錯(cuò)誤的,
25、“FroYo”(凍酸奶)才是 Android 2.2 這個(gè)伴隨 Google Nexus One 發(fā)布的新版的最新代號(hào)。而下一個(gè)版本的代號(hào)將會(huì)是“姜餅”。Android 2.2 “Froyo”: Nexus One 的用戶已經(jīng)開始接受 Android 2.2 “FroYo”的無(wú)線更新,其它機(jī)型的用戶可能會(huì)在短時(shí)間內(nèi)獲取到這一更新的。這一版本的更新出來(lái)會(huì)讓大量讓其他手機(jī)用戶垂涎三尺。</p><p> 有關(guān)的消息
26、眾口一詞聲稱 ?Android 3.0 “Gingerbread”,Google 將會(huì)在今年秋天的某個(gè)時(shí)候發(fā)布出來(lái),它將帶來(lái)給用戶新的體驗(yàn)。</p><p> 從 Android 的發(fā)展旅途中,我們看到 2003 年 Andy他是一個(gè)有遠(yuǎn)見的人,看到了 2005 年的起步和被 Google 的收購(gòu),也看到了系統(tǒng)的進(jìn)步以及新的機(jī)型的快速發(fā)布。所有這一切都讓我們相信,Android 將會(huì)走向世界第一移動(dòng)操作系統(tǒng)寶座
27、的步伐是勢(shì)不可擋的。Android 平板電腦也在今年的夏天開始發(fā)布以及 Google TV 發(fā)布以后(也許還有 Google Music?),Android 可能真的會(huì)將繼續(xù)帶著我們走向移動(dòng)設(shè)備夢(mèng)想的彼岸。</p><p><b> 1.1 背景</b></p><p> 在我們的生活中有許多的游戲,但是游戲不同,它也會(huì)給玩家?guī)?lái)不同的感受和生活理念。游戲是我們?nèi)?/p>
28、常生活的一個(gè)必不可少的娛樂項(xiàng)目,也帶動(dòng)了游戲相關(guān)產(chǎn)業(yè)市場(chǎng)的發(fā)展。游戲平臺(tái)是經(jīng)過(guò)從游戲機(jī)到電視游戲,然后從到pc游戲,到手機(jī)游戲,中間經(jīng)歷了很多的技術(shù)的更新和變革。但隨著新技術(shù)的發(fā)展和我們生活水平質(zhì)量的提高,手機(jī)開始逐漸變?yōu)槠占埃驗(yàn)槭謾C(jī)是非常小巧便捷的,而且方便的特性成為我們?nèi)粘I钪斜貍渫ㄓ嵐ぞ摺6谑謾C(jī)平臺(tái)的游戲也就擁有的市場(chǎng)空間是巨大的,也因隨著3g的開通和應(yīng)用,手機(jī)游戲必然會(huì)迎來(lái)新的一輪游戲熱潮!</p><
29、;p><b> 1.2 課題來(lái)源</b></p><p> 現(xiàn)在的移動(dòng)電話是小型的計(jì)算機(jī),它的處理能力與臺(tái)式機(jī)的標(biāo)準(zhǔn)處理能力相比很有限,但是足夠運(yùn)行一個(gè)小型的游戲。現(xiàn)在的手機(jī)的一個(gè)特性就是它們還是網(wǎng)絡(luò)計(jì)算機(jī),能夠高速發(fā)送和接收數(shù)字?jǐn)?shù)據(jù)。除了語(yǔ)音數(shù)據(jù)以外,它們還可以發(fā)送和接收其它類型的數(shù)據(jù)。所以這樣的網(wǎng)絡(luò)游戲也可以在手機(jī)上實(shí)現(xiàn)。短信類游戲就好像“虛擬寵物”那樣。短信游戲是通過(guò)玩家和游
30、戲服務(wù)商通過(guò)短信中的文字的內(nèi)容來(lái)交流,達(dá)到進(jìn)行游戲的目的的一種文字游戲。 由于短信游戲的整個(gè)游戲過(guò)程都是通過(guò)文字來(lái)表達(dá),造成短信游戲的娛樂性較差。但是短信游戲卻是兼容性最好的手機(jī)游戲之一。只要您的手機(jī)可以發(fā)短信,您就可以暢快的享受短信游戲給您帶來(lái)的快樂了。圖形類游戲更接近我們常說(shuō)的“電視游戲”,玩家通過(guò)動(dòng)畫的形式來(lái)發(fā)展情節(jié)進(jìn)行游戲。由于游戲采用了更為直觀且更為精美的畫面直接表現(xiàn),因此圖形類游戲的游戲性和代入感往往較文字類游戲高。因此廣受
31、玩家們的歡迎。嵌入式游戲是一種將游戲程序預(yù)先固化在手機(jī)的芯片中的游戲。由于這種游戲的所有數(shù)據(jù)都是預(yù)先固化在手機(jī)芯片中的,因此這種游戲是無(wú)法進(jìn)行任何修改的。也就是說(shuō),您不能更換其它游戲的,只能玩您手機(jī)中已經(jīng)存在的娛樂游戲,而且您也不能將它</p><p> 本題目是基于Android平臺(tái)開發(fā)的一個(gè)小型的程序。其實(shí)都差不多,在有JAVA的智能手機(jī)上都可以運(yùn)行。其實(shí)手機(jī)是我們生活中不可缺少的工具,這些小游戲可以帶給我
32、們快樂和放松我們的心情。無(wú)論什么樣手機(jī),我想買起來(lái)的時(shí)候上面就有一些它自帶的各種小游戲,其中有一個(gè)獨(dú)特的小游戲也是非常重要的。</p><p> 1.3 國(guó)內(nèi)外研究現(xiàn)狀</p><p> Android 是Google開發(fā)的基于Linux平臺(tái)的開源手機(jī)操作系統(tǒng)。它包括操作系統(tǒng)、用戶界面和應(yīng)用程序 —— 移動(dòng)電話工作所需的全部軟件,而且不存在任何以往阻礙移動(dòng)產(chǎn)業(yè)創(chuàng)新的專有權(quán)障礙。Goog
33、le與開放手機(jī)聯(lián)盟合作開發(fā)了 Android,這個(gè)聯(lián)盟由包括中國(guó)移動(dòng)、摩托羅拉、高通、宏達(dá)電和 T-Mobile 在內(nèi)的 30 多家技術(shù)和無(wú)線應(yīng)用的領(lǐng)軍企業(yè)組成。Google通過(guò)與運(yùn)營(yíng)商、設(shè)備制造商、開發(fā)商和其他有關(guān)各方結(jié)成深層次的合作伙伴關(guān)系,希望借助建立標(biāo)準(zhǔn)化、開放式的移動(dòng)電話軟件平臺(tái),在移動(dòng)產(chǎn)業(yè)內(nèi)形成一個(gè)開放式的生態(tài)系統(tǒng)。 Android 作為谷歌企業(yè)戰(zhàn)略的重要組成部分,將進(jìn)一步推進(jìn)"隨時(shí)隨地為每個(gè)人提供信息&quo
34、t;這一企業(yè)目標(biāo)的實(shí)現(xiàn)。我們發(fā)現(xiàn),全球?yàn)閿?shù)眾多的移動(dòng)電話用戶從未使用過(guò)任何基于 Android 的電話。谷歌的目標(biāo)是讓(移動(dòng)通訊)不依賴于設(shè)備甚至平臺(tái)。出于這個(gè)目的,Android 將補(bǔ)充,而不會(huì)替代谷歌長(zhǎng)期以來(lái)奉行的移動(dòng)發(fā)展戰(zhàn)略:通過(guò)與全球各地的手機(jī)制造商和移動(dòng)運(yùn)營(yíng)商結(jié)成合作伙伴,開發(fā)既有用又有吸引力的移動(dòng)服務(wù),并推廣這些產(chǎn)品?! ¢_放手機(jī)聯(lián)盟的成立和 Android 的推</p><p> 1.4 論文主
35、要工作</p><p> 此游戲主要是采用Android的View框架編寫,部分框架運(yùn)用Android中的其他組件。主要運(yùn)用了算法來(lái)實(shí)現(xiàn)對(duì)棋局的分析,棋盤輸贏的判定。 </p><p> UI方面:此游戲當(dāng)進(jìn)入游戲的界面時(shí),調(diào)用的是一個(gè)用相對(duì)布局-AbsoluteLayout的XML布局文件。其中包括了一個(gè)IamgeView和4個(gè)Button.分別實(shí)現(xiàn)了不同的功能。第一個(gè)Button是
36、進(jìn)入新游戲,點(diǎn)擊按鈕進(jìn)入新游戲,來(lái)選擇對(duì)手。第二個(gè)Button是幫助,用了一個(gè)TextView來(lái)說(shuō)明怎樣來(lái)進(jìn)行游戲。第三個(gè)Button是游戲的關(guān)于,用了一個(gè)AlertDialog來(lái)介紹了一下游戲的這個(gè)游戲的好處。第四個(gè)Button是游戲的退出按鈕。在游戲中,我用畫線來(lái)不滿了整個(gè)的手機(jī)屏幕,在上面用了TextView來(lái)進(jìn)行了文字的說(shuō)明和提示。</p><p> 本篇論文,主要目的是為了探討更加深入的理解Andro
37、id,為移動(dòng)終端上的游戲軟件的打造提供一個(gè)思路。</p><p> 2 Android的開發(fā)環(huán)境</p><p> 本章將主要介紹如何構(gòu)建Android開發(fā)環(huán)境,包括獲取Android SDK、Eclipse以及進(jìn)行Android Eclipse插件設(shè)置等。</p><p><b> 2.1 操作系統(tǒng)</b></p><
38、;p> 目前只支持XP(32-bit)、Vista(32/64-bit)、Mac OS X 10.4.8或更新版本(x86)、Linux(只在Linux Ubuntu Dapper Drake上面做過(guò)測(cè)試)。</p><p> 系統(tǒng)XP sp2/sp3 32bit 來(lái)做講解,其他系統(tǒng)的可以google一下差異,反正都大同小異的。</p><p> 2.2 Android開發(fā)環(huán)境
39、</p><p> 無(wú)論是官方還是我本人,都建議使用eclipse進(jìn)行開發(fā),當(dāng)然,eclipse版本要在3.3以上,這是官方說(shuō)法,3.3以下我也沒測(cè)過(guò),3.3 (Europa)、3.4 (Ganymede) 都可以,java版本或者EE版本也都沒問(wèn)題的,可以到eclipse官方下載最新版本。因?yàn)殚_發(fā)是基于java的,所以jdk是少不了的,jdk要求是5.0或者6.0,我還是用5.0比較多,可以到sun官方下載。
40、</p><p> 2.3 Android開發(fā)環(huán)境變量配置</p><p> 2.3.1 jdk的配置</p><p> 首先要到sun官方下載jdk,注意的是下載jdk而不是下載jre,因?yàn)閖re是提供java的運(yùn)行環(huán)境而不是開發(fā)環(huán)境。sun官方網(wǎng)站是:http://java.sun.com</p><p> 下載后安裝是下的解壓包
41、那就解壓到某目錄,例如解壓到是C:\Program Files\Java\jdk1.5.0_14</p><p> 右鍵點(diǎn)擊我的電腦 -> 屬性 -> 高級(jí),點(diǎn)擊下面的環(huán)境變量,在下面的“系統(tǒng)變量”處選擇新建在變量名處輸入 JAVA_HOME變量值中輸入剛才的目錄,比如我的就C:\Program Files\Java\jdk1.5.0_14 。效果如圖2-1所示:</p><p&
42、gt; 圖2-1進(jìn)入環(huán)境變量</p><p> 確定后再新建一個(gè)變量名為classpath,變量值為 %JAVA_HOME%/lib/rt.jar;%JAVA_HOME%/lib/tools.jar , 確定后找到PATH的變量,雙擊或點(diǎn)擊編輯,在變量值最前面加上%JAVA_HOME%/bin; 注意里面的是,確定、確定、確定后即可。具體如下圖2-2所示:</p><p> 圖2-2
43、環(huán)境變量的設(shè)置</p><p> 然后開始 - 運(yùn)行 cmd,輸入java或者javac看看有沒有效果,如果出來(lái)一大堆其它的東西,那就好了,如果出現(xiàn)類似xxx不是內(nèi)部或者是外部命令之類的,那就說(shuō)明你的設(shè)置有問(wèn)題,看看那里出問(wèn)題然后加以改正。</p><p> 2.3.2 sdk的配置</p><p> 因?yàn)槲覀円_發(fā)的android應(yīng)用程序,所以下的sdk是G
44、oogle那里下載,地址在http://developer.android.com/sdk/1.5_r3/index.html 以后更新后估計(jì)地址會(huì)變,所以大家可以從http://developer.android.com/index.html進(jìn)入android主頁(yè),然后點(diǎn)擊sdk就到了這個(gè)下載頁(yè)面,我是XP,當(dāng)然下載了第一個(gè)Windows的版本。下載后解壓到一個(gè)目錄,如是D:\SDK\android-sdk-windows-1.5_r
45、3\android-sdk-windows-1.5_r3 然后同樣要設(shè)置環(huán)境變量,同jdk設(shè)置,新建一個(gè)SDK_HOME,值為D:\SDK\android-sdk-windows-1.5_r3\android-sdk-windows-1.5_r3 ,然后找到path,在前面加上%SDK_HOME%\tools; 就OK了。和jdk一樣,我們也可以測(cè)試一下環(huán)境變量是否設(shè)置成功,cmd窗口中輸入android,出現(xiàn)一堆東西,就完成了。<
46、;/p><p> 2.4 eclipse設(shè)置</p><p> 當(dāng)然,以上都搞定后,還不能馬上用eclipse開發(fā)android應(yīng)用程序,還必須添加eclipse插件才行,幸好這步驟非常輕松,打開eclipse后,點(diǎn)擊菜單欄的help -> install new software... 然后點(diǎn)擊Add會(huì)出來(lái)一個(gè)Add Site的窗口,這里Name輸入android(自己取個(gè)就是了)
47、,location中輸入插件的網(wǎng)絡(luò)地址:</p><p> https://dl-ssl.google.com/android/eclipse/</p><p> 然后就等待連接了,然后install,把"Android DDMS" 和 "Android Development Tools"都選中,finish就可以了,可能有段時(shí)間會(huì)去計(jì)算插件占
48、用資源情況,慢慢等會(huì)。完成后會(huì)提示重啟eclipse來(lái)加載插件,ok重啟,就可以用了。</p><p> 2.5 Android開發(fā)環(huán)境配置最終步驟</p><p> 為什么要有這個(gè)步驟,是因?yàn)檫\(yùn)行了example的時(shí)候總會(huì)出現(xiàn)“Failed to find an AVD compatible with target”,所以在這里寫一下該步驟來(lái)提供大家的方便。</p>&
49、lt;p> avd必須在運(yùn)行實(shí)例之前前創(chuàng)建好,這個(gè)時(shí)候可以直接在cmd中輸入 android list,就會(huì)列出幾個(gè)由avd創(chuàng)建的api,如果有id1 id2 id3 分別對(duì)應(yīng)sdk1.1 sdk1.5 GoogleAPIs。</p><p> 然后就運(yùn)行android create --name myname(取一個(gè)英文的名字) --target 3(如果要用sdk1.5就輸入2,1.1輸出1)<
50、;/p><p> 3 Android的架構(gòu)分析</p><p> 3.1 Android的功能特征</p><p> (l)應(yīng)用程序架構(gòu):在應(yīng)用程序架構(gòu)內(nèi)已經(jīng)具備多種不同的基礎(chǔ)組件,在開發(fā)應(yīng)用程序時(shí),就可以直接調(diào)用這些組件來(lái)使用,可以節(jié)省開發(fā)應(yīng)用程序的心力及時(shí)間。</p><p> (2)Dalvik虛擬機(jī)器:在Android平臺(tái)上所使用
51、Java虛擬機(jī),不是Sim公司的標(biāo)準(zhǔn)Java虛擬機(jī),而是使用Google自主開發(fā)的代號(hào)為Dalvik的虛擬機(jī),它在保證API方面的兼容的同時(shí),針對(duì)移動(dòng)手機(jī)進(jìn)行了大幅優(yōu)化,占用資源更小,運(yùn)行效率更高。</p><p> (3)集成的瀏覽器:集成的瀏覽器是Android內(nèi)建的瀏覽器,是以WebKit的瀏覽引擎為基礎(chǔ)所開發(fā)成的。WedKit是一個(gè)開源瀏覽器網(wǎng)頁(yè)排版引擎,目前使用WebKit引擎的瀏覽器主要有:Safa
52、ri,Midori,Epiphany等。配合Android手機(jī)的功能,可以在瀏覽網(wǎng)頁(yè)時(shí),達(dá)到更好的效果,例如:局部性的縮放網(wǎng)頁(yè)上的資訊、觸控式的操作等效果。</p><p> (4)優(yōu)化的繪圖能力:在程序里可以用到的繪圖功能分為2D與3D兩個(gè)方面。在2D方面,Android提供了一套特有的類庫(kù)(SGL;而在3D方面則是使用OpenGLES1.0(openGL for Embedded systems)規(guī)范的類庫(kù)
53、。它們是一種非??斓膱D形引擎,并且支持硬件加速。</p><p> (5)SQLite數(shù)據(jù)庫(kù):SQLite提供結(jié)構(gòu)化的數(shù)據(jù)存取。SQLite是一款輕型的數(shù)據(jù)庫(kù),它的設(shè)計(jì)目標(biāo)是嵌入式的,目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用的資源非常低。它能夠支持Windows/Linux/U nix等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如php,Java等,還有ODBC接口,同樣比起Mysql,PostgreS
54、QL來(lái)講,它的處理速度比它們都快。它無(wú)需安裝和管理配置,它是一個(gè)儲(chǔ)存在單一磁盤文件中的完整數(shù)據(jù)庫(kù),體積小只有250KB但支持?jǐn)?shù)據(jù)庫(kù)大小至2TB。它雖然很小巧,但是支持的SQL語(yǔ)句毫不遜色于其它開源數(shù)據(jù)庫(kù)。同時(shí)它還支持事務(wù)功能和并發(fā)處理等等。SQLite也是一套開放性的關(guān)聯(lián)式資料庫(kù),其特點(diǎn)在于輕量性方面的設(shè)計(jì)結(jié)構(gòu),更適合在手機(jī)上使用。</p><p> (6)多媒體的支持能力:主要用于播放媒體文件。這同時(shí)包括對(duì)音
55、頻(如播放MP3或其他音樂文件等)和視頻(如播放從網(wǎng)上下載的視頻)的支持,并支持“播放URI地址”(Note:URI即是統(tǒng)一資源識(shí)別地址)模式—在網(wǎng)絡(luò)上直接播放的流媒體。另外支持各種通用的靜態(tài)圖像格式,例如:JPG、PNG、GIF等格式。</p><p> (7)GSM技術(shù):Global System for Mobile Communications,即全球移動(dòng)通訊系統(tǒng),俗稱”全球通”,是一種起源于歐洲的移動(dòng)
56、通信技術(shù)標(biāo)準(zhǔn),是第二代移動(dòng)通信技術(shù),其開發(fā)目的是讓全球各地可以共同使用一個(gè)移動(dòng)電話網(wǎng)絡(luò)標(biāo)準(zhǔn),讓用戶使用一部手機(jī)就能行遍全球。GSM技術(shù)是屬于手機(jī)硬件方面的展現(xiàn),也是在開發(fā)Android應(yīng)用程序時(shí)可以突出的特點(diǎn)之一。</p><p> (8)藍(lán)牙、EDGE、3G及Wi-Fi:藍(lán)牙是一種新型、開放、低成本、短距離的無(wú)線連接技術(shù),可取代短距離的電纜,實(shí)現(xiàn)話音和數(shù)據(jù)的無(wú)線傳輸。EDGE(Enhanced Data Ra
57、te for GSM,Evolution),即增強(qiáng)型數(shù)據(jù)速率GSM演進(jìn)技術(shù)。EDGE是一種從GSM到3G的過(guò)渡技術(shù),它主要是在GSM系統(tǒng)中采用了一種新的調(diào)制方法,即最先進(jìn)的多時(shí)隙操作和SPSK調(diào)制技術(shù)。由于8PSK可將現(xiàn)有GSM網(wǎng)絡(luò)采用的GMSK調(diào)制技術(shù)的信號(hào)空間從2擴(kuò)展到8,從而使每個(gè)符號(hào)所包含的信息是原來(lái)的4倍。Wi-Fi(WirelessFidelity),即無(wú)線保真技術(shù),與藍(lán)牙技術(shù)一樣,同屬于在辦公室和家庭中使用的短距離無(wú)線技術(shù)
58、。該技術(shù)使用的是2.4GHz附近的頻段,該頻段目前尚屬?zèng)]用許可的無(wú)線頻段。其目前可使用的標(biāo)準(zhǔn)有兩個(gè),分別是IEEE802.lla和IEEE802.11b。這些通訊能力也是屬于手機(jī)硬件方面的展現(xiàn),也是在開發(fā)Android應(yīng)用程序時(shí)可以突出的特點(diǎn)之一。</p><p> (9)GPS: Global Positioning System,即全球定位系統(tǒng),它是一個(gè)由覆蓋全球的24顆衛(wèi)星組成的衛(wèi)星系統(tǒng)。這個(gè)系統(tǒng)可以保證
59、在任意時(shí)刻和任何地點(diǎn)都可以同時(shí)觀測(cè)到4顆衛(wèi)星,以保證衛(wèi)星可以采集到該觀測(cè)點(diǎn)的經(jīng)緯度和高度,以便實(shí)現(xiàn)導(dǎo)航、定位、授時(shí)等功能。這項(xiàng)技術(shù)可以用來(lái)引導(dǎo)飛機(jī)、船舶、車輛以及個(gè)人。這個(gè)同樣也是屬于手機(jī)硬體方面的體現(xiàn),也是在開發(fā)Android應(yīng)用程序是可以突出的特點(diǎn)之一。</p><p> 3.2 Android架構(gòu)分析</p><p> 圖中顯示的是Android架構(gòu)的五個(gè)主要部分。</p&
60、gt;<p> 3.2.1 應(yīng)用程序框架</p><p> 在Android SDK中,定義了讓開發(fā)者使用與核心應(yīng)用程序相同API的權(quán)限應(yīng)用程序框架是為了要簡(jiǎn)化組件的重新利用而設(shè)計(jì)的,應(yīng)用程序可以發(fā)布功能為其它應(yīng)用程序所使用。但是,這要受限于應(yīng)用程序架構(gòu)的安全機(jī)制,使用者以用同樣的機(jī)制來(lái)新增、置換組件。目前所有的應(yīng)用程序是由服務(wù)及系統(tǒng)來(lái)組成,包含有:</p><p>
61、(l)一套強(qiáng)大和可擴(kuò)展的視圖系統(tǒng):用來(lái)建構(gòu)一個(gè)應(yīng)用程序的基本組件,包了在開發(fā)系統(tǒng)畫面時(shí),常用的列表、網(wǎng)格、文本框、按鈕等控制項(xiàng),甚至是內(nèi)嵌的Web瀏覽器。</p><p> 圖2-1 Android架構(gòu)的五個(gè)部分</p><p> (2)內(nèi)容提供者:使應(yīng)用程序可以訪問(wèn)另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)庫(kù)),或者共享它們自己的數(shù)據(jù)。</p><p> (3)資源
62、管理器:提供各種非程序代碼的資源讓應(yīng)用程序去使用。例如:本字符串、圖形文件或排版相關(guān)的布局文件。</p><p> (4)通知管理器:提供應(yīng)用程序在狀態(tài)欄中顯示應(yīng)用程序自定義的提示信息。</p><p> (5)活動(dòng)管理器:管理所有應(yīng)用程序的生命周期及提供常用的導(dǎo)航回退功能。例如:啟動(dòng)應(yīng)用程序要用到的資源準(zhǔn)備及關(guān)閉應(yīng)用程序時(shí)釋放內(nèi)存及相關(guān)資源等工作。</p><p&
63、gt; (6)視窗管理器:用來(lái)管理所有啟動(dòng)程序的視窗。</p><p> (7)位置管理器:用來(lái)管理地圖服務(wù)的相關(guān)功能。</p><p> (8)電話管理器:用來(lái)管理用戶撥打與接聽電話的相關(guān)功能。</p><p> (9)包管理器:管理所有安裝在Android系統(tǒng)內(nèi)的包。</p><p><b> 3.2.2 類庫(kù)<
64、/b></p><p> 在Android中包含一些C/C++的類庫(kù),這些類庫(kù)能被Android系統(tǒng)中不同的組件來(lái)使用。開發(fā)者可以通過(guò)應(yīng)用程序框架使用這些功能。部分核心類庫(kù)列表如下:</p><p> (1)surface Manager:主要的功能是讓開發(fā)者可以去存取/顯示系統(tǒng)及管理的功能,在[顯示]與[存取操作]間的對(duì)應(yīng)、互動(dòng)以及實(shí)現(xiàn)無(wú)接縫的2D/3D多應(yīng)用程序之間的整合。例
65、如:在2D、2D顯示上的合成、疊合動(dòng)作。</p><p> (2)3Dlibraries:主要是依openGLES1.0規(guī)范所定義的3D繪圖引擎。該庫(kù)使用硬件加速(當(dāng)硬件可用時(shí)),可以將硬件的3D功能做最佳化的處理顯示。</p><p> (3)SGL:主要是處理有關(guān)顯示2D方面的繪圖引擎。</p><p> (4)Media Frame work:主要是以p
66、acketVideo公司的OpenCORE為基礎(chǔ)所發(fā)展的多媒體類庫(kù),該庫(kù)支持回放和錄制大量流行的音視頻格式和靜態(tài)圖片。例如:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等格式</p><p> (5)Free Type:主要是用來(lái)顯示點(diǎn)陣圖和處理向量字形的。</p><p> (6)SSL:(secureSocketsuyer),中文名為“安全套接層協(xié)議層”,
67、它是網(wǎng)景公司提出的基于WEB應(yīng)用的安全協(xié)議,當(dāng)前版本為3.0。SSL協(xié)議指定了一種在應(yīng)用程序協(xié)議(如HTTP、Telenet、NMTP和FTP等)和TCP/IP協(xié)議之間提供數(shù)據(jù)安全性分層的機(jī)制,它為TCP/IP連接提供數(shù)據(jù)加密、服務(wù)器認(rèn)證、消息完整性以及可選的客戶機(jī)認(rèn)證。它已被廣泛地用于Web瀏覽器與服務(wù)器之間的身份認(rèn)證和加密數(shù)據(jù)傳輸。SSL協(xié)議位于TCP膽協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL協(xié)議可分為兩層:SSL記
68、錄協(xié)議(SSL Record Proto col):它建立在可靠的傳輸協(xié)議(如TCP)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。SSL握手協(xié)議(SSL Hand shake proto col):它建立在SSL記錄協(xié)議之上,用于在實(shí)際的數(shù)據(jù)傳輸開始前,通訊雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。SSL協(xié)議提供的服務(wù)主要有:①認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;②加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取;③維
69、護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過(guò)程中</p><p> (7)SQLite:SQLite是一套開放性的關(guān)聯(lián)式資料庫(kù),能夠被所有應(yīng)用程序使用的輕量級(jí)的關(guān)系數(shù)據(jù)庫(kù)引擎。</p><p> (8)web Kit:是一個(gè)先進(jìn)的網(wǎng)頁(yè)瀏覽器引擎,被用來(lái)構(gòu)建Android瀏覽器和內(nèi)嵌的web視圖,也可以讓開發(fā)者利用這個(gè)引擎來(lái)做不同的應(yīng)用。</p><p> (9)lib c
70、:就是一個(gè)BSD標(biāo)準(zhǔn)C類庫(kù)。但是,針對(duì)Linux嵌入式裝置進(jìn)行過(guò)最佳化的調(diào)整。</p><p> 3.2.3 Android運(yùn)行時(shí)的組件</p><p> 雖然Android是用Java語(yǔ)言來(lái)開發(fā)、撰寫應(yīng)用程序,但卻不使用Java運(yùn)行時(shí)組件來(lái)執(zhí)行Java程序,而是使用了由Google自行研發(fā)的Android運(yùn)行時(shí)組件來(lái)執(zhí)行程序。Android運(yùn)行時(shí)組件包括兩個(gè)重要的部分,一個(gè)是核心類庫(kù)
71、,另一個(gè)是Dalvik虛擬機(jī)。</p><p> 3.3 Android應(yīng)用的構(gòu)成和工作機(jī)制</p><p> 對(duì)于一個(gè)Android應(yīng)用程序來(lái)說(shuō),是由Activity、IntentReceiver、Service、Content Provider四部分組成,但并不是每一個(gè)Android應(yīng)用程序都必須由這四部分組成。在應(yīng)用程序中使用時(shí),需要在配置文件AndroidManifest.xm
72、l中進(jìn)行配置。這個(gè)配置文件是每個(gè)Android應(yīng)用程序所必需的,用于定義應(yīng)用程序的組件、組件的功能以及必要條件等。Android應(yīng)用的構(gòu)成和工作流程如圖2-2: </p><p> 圖2-2 Android的構(gòu)成和工作流程</p><p> 4 Android應(yīng)用程序架構(gòu)結(jié)構(gòu)剖析</p><p> 本章將會(huì)詳細(xì)敘述Android的應(yīng)用程序所包括的基本組件,還
73、有這些組件之間的溝通方式—Intent(除了Contentprovider),同時(shí)講解一下Android應(yīng)用程序的生命周期(Activity)—這是其他智能收與Android手機(jī)平臺(tái)最顯著不同的地方。最后將介紹在Android的應(yīng)用程序中如何利用下載外部資源。</p><p><b> 4.1應(yīng)用程序基礎(chǔ)</b></p><p> Android的應(yīng)用程序全部都是
74、用Java編程語(yǔ)言所寫的。編譯后的Java代碼——包括應(yīng)用程序要求的任何數(shù)據(jù)和資源文件,是通過(guò)aapt工具捆綁成一個(gè)Android包,歸檔文件是以.apk為后綴。這個(gè)文件是分發(fā)應(yīng)用程序和安裝到移動(dòng)設(shè)備的中介或者是工具,用戶下載這個(gè)文件到他們自己的設(shè)備上。一個(gè).apk文件中的所有代碼就會(huì)被認(rèn)為是一個(gè)應(yīng)用程序。</p><p> aapt是Android Asset Packaging Tool的首寫字母的縮寫,這
75、個(gè)工具包是含在SDK的tools/目錄下的。查看、創(chuàng)建、更新與zip兼容的歸檔文件(zip、jar、apk)。它也能將資源文件編譯成二進(jìn)制包。</p><p> 雖然你可能不會(huì)經(jīng)常直接使用appt,但構(gòu)建腳本(build scripts)和IDE插件會(huì)使用這個(gè)工具打包成apk文件,構(gòu)成一個(gè)Android的應(yīng)用程序。</p><p> 下面是更詳細(xì)的使用細(xì)節(jié),首先打開一個(gè)終端,進(jìn)入too
76、ls/目錄下,運(yùn)行命令:</p><p> Linux或Mac操作系統(tǒng):./aapt ,如果是Windows:aapt.exe 。在這里注意的是:tools/目錄指的是android SDK目錄下的/platforms/android-X/tools/。在很多的方面,每個(gè)Android的應(yīng)用程序是生活在它自己的世界。默認(rèn)的情況下,任何一個(gè)應(yīng)用程序是運(yùn)行在它自己的Linux進(jìn)程中。而當(dāng)應(yīng)用程序中的任何代碼需要被執(zhí)
77、行時(shí)候,Android將啟動(dòng)進(jìn)程;當(dāng)它不再需要和系統(tǒng)資源不會(huì)被其他應(yīng)用程序所請(qǐng)求時(shí),Android就會(huì)關(guān)閉進(jìn)程這個(gè)進(jìn)程。每一個(gè)應(yīng)用程序都有自己的Java虛擬機(jī)(VM),所以應(yīng)用程序的代碼是獨(dú)立于其他所有的應(yīng)用程序代碼的運(yùn)行。在默認(rèn)情況下,每一個(gè)應(yīng)用程序分配一個(gè)唯一的Linux用戶ID。權(quán)限被設(shè)置為每一個(gè)應(yīng)用程序的文件僅對(duì)用戶和應(yīng)用程序自己本身可見。雖然有一些方法也可以暴露他們給其他應(yīng)用程序。也有可能的是設(shè)置兩個(gè)應(yīng)用程序共享一個(gè)用戶ID,
78、這種情況下,他們能夠看到對(duì)方的文件。為了節(jié)省系統(tǒng)資源的占用,具有相同ID的應(yīng)用程序最好可以安排在同一個(gè)Linux進(jìn)程中,共享同一個(gè)VM。</p><p> 4.2 應(yīng)用程序組件</p><p> Android的一個(gè)主要特點(diǎn)是,一個(gè)應(yīng)用程序可以利用其他應(yīng)用程序的元素(假設(shè)這些應(yīng)用程序允許的話)。例如,如果你的應(yīng)用程序需要顯示一個(gè)圖像的滾動(dòng)列表,且其他應(yīng)用程序已經(jīng)開發(fā)了一個(gè)合適的滾動(dòng)條并
79、可以提供給別的應(yīng)用程序用,你可以調(diào)用這個(gè)滾動(dòng)條來(lái)工作,而不用自己開發(fā)一個(gè)。你的應(yīng)用程序不用并入其他應(yīng)用程序的代碼或鏈接到它。相反,當(dāng)需求產(chǎn)生時(shí)它只是啟動(dòng)其他應(yīng)用程序塊。</p><p> 對(duì)于這個(gè)工作,當(dāng)應(yīng)用程序的任何部分被請(qǐng)求時(shí),系統(tǒng)必須能夠啟動(dòng)一個(gè)應(yīng)用程序的進(jìn)程,并實(shí)例化該部分的Java對(duì)象。因此,不像其他大多數(shù)系統(tǒng)的應(yīng)用程序,Android應(yīng)用程序沒有一個(gè)單一的入口點(diǎn)(例如,沒有main()函數(shù))。相反,
80、系統(tǒng)能夠?qū)嵗瓦\(yùn)行需要幾個(gè)必要的組件。有四種類型的組件:</p><p> 活動(dòng)(Activities) </p><p> 服務(wù)(Services) </p><p> 廣播接收者(Broadcast receivers) </p><p> 內(nèi)容提供者(Content providers) </p><p&g
81、t; 然而,并不是所有的應(yīng)用程序都必須包含上面的四個(gè)部分,你的應(yīng)用程序可以由上面的一個(gè)或幾個(gè)來(lái)組建。當(dāng)你決定使用以上哪些組件來(lái)構(gòu)建Android應(yīng)用程序時(shí),你應(yīng)該將它們列在AndroidManifest.xml文件中,在這個(gè)文件中你可以聲明應(yīng)用程序組件以及它們的特性和要求。關(guān)于AndroidManifest.xml在Android開發(fā)之旅:HelloWorld項(xiàng)目的目錄結(jié)構(gòu)的1.6、AndroidManifest.xml簡(jiǎn)單介紹了一下
82、,你可以參考一下,下篇也將介紹它。</p><p> 4.2.1 活動(dòng)(Activities) </p><p> 一個(gè)活動(dòng)表示一個(gè)可視化的用戶界面,關(guān)注一個(gè)用戶從事的事件。例如,一個(gè)活動(dòng)可能表示一個(gè)用戶可選擇的菜單項(xiàng)列表,或者可能顯示照片連同它的標(biāo)題。一個(gè)文本短信應(yīng)用程序可能有一個(gè)活動(dòng),顯示聯(lián)系人的名單發(fā)送信息;第二個(gè)活動(dòng),寫信息給選定的聯(lián)系人;其他活動(dòng),重新查看舊信息或更改設(shè)置。雖
83、然他們一起工作形成一個(gè)整體的用戶界面,但是每個(gè)活動(dòng)是獨(dú)立于其他活動(dòng)的。每一個(gè)都是作為Activity基類的一個(gè)子類的實(shí)現(xiàn)。</p><p> android.app.Activity類:因?yàn)閹缀跛械幕顒?dòng)(activities)都是與用戶交互的,所以Activity類關(guān)注創(chuàng)建窗口,你可以用方法setContentView(View)將自己的UI放到里面。然而活動(dòng)通常以全屏的方式展示給用戶,也可以以浮動(dòng)窗口或嵌入
84、在另外一個(gè)活動(dòng)中。有兩個(gè)方法是幾乎所有的Activity子類都實(shí)現(xiàn)的:</p><p> onCreate(Bundle):初始化你的活動(dòng)(Activity),比如完成一些圖形的繪制。最重要的是,在這個(gè)方法里你通常將用布局資源(layout resource)調(diào)用setContentView(int)方法定義你的UI,和用findViewById(int)在你的UI中檢索你需要編程地交互的小部件(widgets
85、)。setContentView指定由哪個(gè)文件指定布局(main.xml),可以將這個(gè)界面顯示出來(lái),然后我們進(jìn)行相關(guān)操作,我們的操作會(huì)被包裝成為一個(gè)意圖(Intent),然后這個(gè)意圖對(duì)應(yīng)有相關(guān)的activity進(jìn)行處理。 </p><p> onPause():處理當(dāng)離開你的活動(dòng)時(shí)要做的事情。最重要的是,用戶做的所有改變應(yīng)該在這里提交(通常ContentProvider保存數(shù)據(jù))。 </p>&l
86、t;p><b> 生命周期如圖3-1</b></p><p> 圖3-1Android的生命周期</p><p> 每一個(gè)應(yīng)用程序可能只包含一個(gè)活動(dòng),或者是像短信應(yīng)用程序一樣,它可能會(huì)包含幾個(gè)活動(dòng)。這些活動(dòng)分別是什么,以及有多少,這個(gè)當(dāng)然取決于它的應(yīng)用程序自己的設(shè)計(jì)。根據(jù)一般情況來(lái)說(shuō),當(dāng)一個(gè)應(yīng)用程序被啟動(dòng)的時(shí)候,會(huì)被標(biāo)記為第一個(gè)的活動(dòng),應(yīng)該展示給用戶。從一
87、個(gè)活動(dòng)轉(zhuǎn)移到另外一個(gè)活動(dòng)由當(dāng)前的活動(dòng)完成從而開始下一個(gè)。</p><p> 每一個(gè)活動(dòng)都會(huì)有一個(gè)默認(rèn)的窗口。根據(jù)一般情況來(lái)說(shuō),窗口是會(huì)填滿整個(gè)屏幕的,但是它也有可能比屏幕小或者是浮在其他窗口上,這個(gè)就是程序員代碼的編寫情況了。一個(gè)活動(dòng)還可以使用額外窗口。比如彈出式對(duì)話框,或者是當(dāng)一個(gè)用戶選擇屏幕上一個(gè)特定的項(xiàng)時(shí),會(huì)跳出一個(gè)窗口來(lái)顯示給用戶重要的信息。</p><p> 窗口的可視化內(nèi)容
88、是由繼承自接口為View基類,一個(gè)分層的視圖—對(duì)象提供。每個(gè)可視化控件是窗口內(nèi)的一個(gè)特定的矩形空間。父視圖包含和組織子女視圖的布局。葉子視圖--分層的底層。繪制的矩形會(huì)直接控制和響應(yīng)用戶的操作。所以,一個(gè)視圖活動(dòng)是與用戶發(fā)生交互的地方。比如說(shuō),一個(gè)視圖顯示一個(gè)小的圖片和當(dāng)用戶點(diǎn)擊圖片時(shí)發(fā)起一個(gè)動(dòng)作行為。Android有一些現(xiàn)成的可視化控件你可以使用,其中包括按鈕(buttons)、圖片按鈕(ImageButton)、文本域(text f
89、ields)、可編輯文本控件(EditText)、菜單項(xiàng)(menu items)、仿真時(shí)鐘(AnalogClock)滾動(dòng)條(scroll bars)、開關(guān)按鈕(ToggleButton)、復(fù)選按鈕(check boxes)等等。</p><p> 通過(guò)Activity.setContentView() 方法來(lái)設(shè)置一個(gè)視圖層次在我們的活動(dòng)窗口中。內(nèi)容視圖(content view)是層次結(jié)構(gòu)的根視圖對(duì)象。層次結(jié)構(gòu)
90、如下圖3-2所示:</p><p> 圖3-2View的層次結(jié)構(gòu)</p><p> Activity.setContentView()方法:public void setContentView (int layoutResID):根據(jù)布局資源的設(shè)置活動(dòng)界面。資源將會(huì)被夸大,添加布局資源文件中的所有的最高層的視圖( top-level views )到活動(dòng).</p>&l
91、t;p> 4.2.2 服務(wù)(Services)</p><p> 與Activity相反,Service是沒有可視化的用戶界面,但是Service的特點(diǎn)是能長(zhǎng)時(shí)間在后臺(tái)運(yùn)行的。所以,也可以這樣去理解,Service是具有一段較長(zhǎng)生命周期而且沒有用戶界面的程序。比如說(shuō)一個(gè)服務(wù)可能要播放背景音樂但是用戶做可以去做其他一些事情,或者它也可能從網(wǎng)絡(luò)獲取數(shù)據(jù),也或者是計(jì)算一些東西并會(huì)提供一個(gè)結(jié)果給需要的活動(dòng)(ac
92、tivities)。每一個(gè)服務(wù)都繼承自Service基類。</p><p> 每一個(gè)服務(wù)類都惠子在AndroidManifest.xml中有自己相應(yīng)的<service>聲明。服務(wù)必須可以通過(guò)Context.startService()或者Context.bindService()啟動(dòng)因?yàn)閟ervice是有兩個(gè)不同的生命周期的。</p><p> 一個(gè)非常典型的例子是媒體播放
93、器播放一個(gè)播放列表中的歌曲文件。該播放器應(yīng)用程序?qū)⒖赡苡幸粋€(gè)或者是多個(gè)活動(dòng)(activities),可以允許用戶選擇要聽的歌曲和開始播放。然而,音樂播放本身就不會(huì)被一個(gè)活動(dòng)處理,因?yàn)橛脩羰窍M3忠魳芬恢辈シ诺?,?dāng)用戶離開播放器的時(shí)候而去做其他事情。為了保持音樂能夠繼續(xù)播放,媒體播放器活動(dòng)可以啟動(dòng)一個(gè)服務(wù)運(yùn)行在后臺(tái)的運(yùn)行。系統(tǒng)將會(huì)保持音樂播放服務(wù)運(yùn)行,甚至媒體播放器離開屏幕的時(shí)候。</p><p> 可以連接到
94、(綁定到)一個(gè)持續(xù)運(yùn)行的服務(wù)(并啟動(dòng)服務(wù),如果它尚未運(yùn)行)。連接之后,你可以通過(guò)服務(wù)暴露的接口與服務(wù)交流。對(duì)于音樂服務(wù),這個(gè)接口可以允許用戶暫停、倒帶、停止和重新播放。</p><p> 像活動(dòng)(activities)和其他組件一樣,服務(wù)(services)運(yùn)行在應(yīng)用程序進(jìn)程中的主線程中。因此,他們將不會(huì)阻止其他組件或用戶界面,他們往往產(chǎn)生其他一些耗時(shí)的任務(wù)(如音樂播放)。</p><p&g
95、t; 4.2.3 廣播接收者(Broadcast receivers) </p><p> 一個(gè)廣播接收者是這樣一個(gè)組件,它不做什么事,僅是接受廣播公告并作出相應(yīng)的反應(yīng)。許多廣播源自于系統(tǒng)代碼,例如公告時(shí)區(qū)的改變、電池電量低、已采取圖片、用戶改變了語(yǔ)言偏好。應(yīng)用程序也可以發(fā)起廣播,例如為了他其他程序知道某些數(shù)據(jù)已經(jīng)下載到設(shè)備且他們可以使用這些數(shù)據(jù)。</p><p> 一個(gè)應(yīng)用程序可以
96、有任意數(shù)量的廣播接收者去反應(yīng)任何它認(rèn)為重要的公告。所有的接受者繼承自BroadcastReceiver基類。</p><p> BroadcastReceiver類:是接受sendBroadcast()發(fā)送的意圖(intents)的基類??梢杂肅ontext.registerReceiver()動(dòng)態(tài)地注冊(cè)這個(gè)類的實(shí)例,或者通過(guò)AndroidManifest.xml中<receiver>標(biāo)簽靜態(tài)發(fā)布。
97、注意:如果你在Activity.onResume() 注冊(cè)一個(gè)接受者,你應(yīng)該在Activity.onPause()注銷它。因?yàn)楫?dāng)暫停時(shí)你不會(huì)收到意圖,注銷它將削減不必要的系統(tǒng)開銷。不要在Activity.onSaveInstanceState()中注銷它,因?yàn)樗鼘⒉粫?huì)被調(diào)用,如果用戶移動(dòng)到先前的堆棧。</p><p> 有兩種主要的可接受廣播類型:</p><p> 正常廣播(由Con
98、text.sendBroadcast發(fā)送)是完全異步的。所有的廣播接收者以無(wú)序方式運(yùn)行,往往在同一時(shí)間接收。這樣效率較高,但是意味著接受者不能使用結(jié)果或終止廣播數(shù)據(jù)傳播。 </p><p> 有序廣播(由Context.sendOrderedBroadcast發(fā)送)一次傳遞給一個(gè)接收者。由于每個(gè)接收者依次執(zhí)行,因此它可以傳播到下一個(gè)接收器,也可以完全終止傳播以便他不會(huì)傳遞給其他接收者。接收者的運(yùn)行順序可由匹配的
99、意圖過(guò)濾器(intent-filter)的android:priority屬性控制。 </p><p> 廣播接收者不顯示一個(gè)用戶界面。然而,它們啟動(dòng)一個(gè)活動(dòng)去響應(yīng)收到的信息,或者他們可能使用NotificationManager去通知用戶。通知可以使用多種方式獲得用戶的注意——閃爍的背光、振動(dòng)設(shè)備、播放聲音等等。典型的是放在一個(gè)持久的圖標(biāo)在狀態(tài)欄,用戶可以打開獲取信息。</p><p>
100、; 4.2.4 內(nèi)容提供者(Content providers)</p><p> 內(nèi)容提供者(content provider)使一個(gè)應(yīng)用程序的指定數(shù)據(jù)集提供給其他應(yīng)用程序。這些數(shù)據(jù)可以存儲(chǔ)在文件系統(tǒng)中、在一個(gè)SQLite數(shù)據(jù)庫(kù)、或以任何其他合理的方式。內(nèi)容提供者繼承自ContentProvider 基類并實(shí)現(xiàn)了一個(gè)標(biāo)準(zhǔn)的方法集,使得其他應(yīng)用程序可以檢索和存儲(chǔ)數(shù)據(jù)。然而,應(yīng)用程序并不直接調(diào)用這些方法。相反,
101、替代的是它們使用一個(gè)ContentResolver對(duì)象并調(diào)用它的方法。ContentResolver能與任何內(nèi)容提供者通信,它與提供者合作來(lái)管理參與進(jìn)來(lái)的進(jìn)程間的通信。</p><p> 內(nèi)容提供者是Android應(yīng)用程序的主要組成部分之一,提供內(nèi)容給應(yīng)用程序。他們封裝數(shù)據(jù)且通過(guò)單個(gè)ContentResolver接口提供給應(yīng)用程序。只有需要在多個(gè)應(yīng)用程序間共享數(shù)據(jù)是才需要內(nèi)容提供者。例如,通訊錄數(shù)據(jù)被多個(gè)應(yīng)用程
102、序使用,且必須存儲(chǔ)在一個(gè)內(nèi)容提供者中。如果你不需要在多個(gè)應(yīng)用程序間共享數(shù)據(jù),你可以直接使用SQLiteDataBase</p><p> 當(dāng)ContentResolver發(fā)出一個(gè)請(qǐng)求時(shí),系統(tǒng)檢查給定的URI的權(quán)限并傳遞請(qǐng)求給內(nèi)容提供者注冊(cè)。內(nèi)容提供者能理解URI想要的東西。UriMatcher 類用于幫組解析URIs。</p><p> 需要實(shí)現(xiàn)的方法主要如下:</p>
103、<p> query(Uri, String[], String, String[], String) 返回?cái)?shù)據(jù)給調(diào)用者 </p><p> insert(Uri, ContentValues) 插入數(shù)據(jù)到內(nèi)容提供者 </p><p> update(Uri, ContentValues, String, String[]) 更新內(nèi)容提供者已存在的數(shù)據(jù) <
104、/p><p> delete(Uri, String, String[]) 從內(nèi)容提供者中刪除數(shù)據(jù) </p><p> getType(Uri) 返回內(nèi)容提供者中的MIME 類型數(shù)據(jù) </p><p> 更多的關(guān)于ContentResolver信息,請(qǐng)查看相關(guān)文檔。</p><p> 每當(dāng)有一個(gè)應(yīng)該由特定組件處理的請(qǐng)求,Android可以
105、確保該組件的應(yīng)用程序正在運(yùn)行,如果沒有就啟動(dòng)它,而且一個(gè)適當(dāng)?shù)慕M件實(shí)例可用,如果沒有就創(chuàng)建。</p><p> 5 程序的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 本章節(jié)主要介紹一下此論文中用到了的Android的布局文件,可視化控件以及它們的具體實(shí)現(xiàn)。</p><p> 5.1 程序的算法研究:</p><p> 本游戲是以五子棋為背景的游戲,
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文 基于android的五子棋設(shè)計(jì)
- 畢業(yè)論文范文——基于android的五子棋游戲設(shè)計(jì)
- 五子棋游戲設(shè)計(jì)畢業(yè)論文
- 基于android的五子棋游戲設(shè)計(jì)
- 畢業(yè)論文——五子棋游戲設(shè)計(jì)
- 基于Android的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn)畢業(yè)論文.doc
- 大學(xué)畢業(yè)論文_基于Android的五子棋游戲設(shè)計(jì).doc
- 畢業(yè)論文---網(wǎng)絡(luò)五子棋游戲設(shè)計(jì)
- java五子棋游戲畢業(yè)論文
- 基于java的五子棋游戲的設(shè)計(jì)——畢業(yè)論文
- 基于android五子棋游戲計(jì)算機(jī)專業(yè)畢業(yè)論文
- 【zs精品】【畢業(yè)論文】基于android平臺(tái)的五子棋游戲(全套)
- 五子棋畢業(yè)論文-html開發(fā)五子棋的原型設(shè)計(jì)
- 基于android的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn)
- 畢業(yè)設(shè)計(jì)(論文)-基于android的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn)
- 五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文】
- 五子棋畢業(yè)論文
- 基于vc的五子棋游戲設(shè)計(jì)與實(shí)現(xiàn)【畢業(yè)論文】
- 軟件工程畢業(yè)設(shè)計(jì)(論文)-基于android的五子棋游戲設(shè)計(jì)
- 基于android平臺(tái)的五子棋游戲的設(shè)計(jì)與實(shí)現(xiàn)
評(píng)論
0/150
提交評(píng)論