




已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
安卓網(wǎng)絡(luò)天氣預(yù)報畢業(yè)論文目錄摘要IAbstractII第1章 引言11.1 研究背景11.2 國內(nèi)外的研究狀況及發(fā)展趨勢11.3 系統(tǒng)分析及其主要內(nèi)容21.4 論文組織結(jié)構(gòu)2第2章 系統(tǒng)實(shí)現(xiàn)所涉及的技術(shù)32.1 Android系統(tǒng)概述32.2 Eclipse介紹32.3 Android系統(tǒng)框架42.4 Android四大組件42.5 用戶界面62.6 Fragment72.7 網(wǎng)絡(luò)編程之使用HttpClient進(jìn)行Get方式通信7第3章 開發(fā)環(huán)境配置93.1 Android開發(fā)框架93.2 開發(fā)所需軟件123.2.1 Android開發(fā)環(huán)境配置133.2.2 Eclipse的設(shè)置14第4章 系統(tǒng)總體分析與模型設(shè)計(jì)154.1 系統(tǒng)的總體結(jié)構(gòu)154.2 功能分析164.2.1 天氣模塊功能分析164.2.2 生活模塊功能分析174.2.3 我模塊功能分析174.3 系統(tǒng)流程圖18第5章 詳細(xì)設(shè)計(jì)205.1 新建工程205.2 Android UI界面的實(shí)現(xiàn)215.3 登陸注冊模塊的實(shí)現(xiàn)225.4 界面切換功能實(shí)現(xiàn)235.5 天氣模塊的實(shí)現(xiàn)235.5.1 天氣信息245.5.2 溫度曲線圖的畫法255.5.3 下拉刷新255.6 生活模塊的實(shí)現(xiàn)255.7 我模塊的實(shí)現(xiàn)265.7.1 城市管理的功能實(shí)現(xiàn)265.7.2 通知提醒功能實(shí)現(xiàn)27第6章 系統(tǒng)測試286.1 測試目的286.2 測試環(huán)境296.3 測試結(jié)果30致謝32參考文獻(xiàn)33附 錄34附錄A: 主要源程序34附錄B: 軟件使用說明書45附錄C: 光盤46 I中原工學(xué)院信息商務(wù)學(xué)院畢業(yè)設(shè)計(jì)(論文)第1章 引言許多先進(jìn)技術(shù)迅速地應(yīng)用于氣象業(yè)務(wù)中,可供天氣預(yù)報用的實(shí)時和非實(shí)時資料急增,這就要求利用自動化的高速通信技術(shù)和信息處理技術(shù)處理這些資料。為適應(yīng)上述發(fā)展,正逐步改進(jìn)氣象通信體制,加速氣象通信現(xiàn)代化。現(xiàn)在人們生活水平的提高,對生活質(zhì)量的要求也越來越高,然而外部自然氣候的變化卻不容樂觀。不管是外出旅行還是農(nóng)業(yè)生產(chǎn)等,氣候變化情況一直都引起人們的普遍關(guān)注,人們迫切的需要隨時隨地的掌握準(zhǔn)確的天氣預(yù)報信息。比如,如果有雨,就建議出門帶傘;如果溫度高于某值就建議防曬等。1.1 研究背景Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。在如今這個智能手機(jī)系統(tǒng)群雄紛爭的時候,Android采用Linux內(nèi)核,開放手機(jī)聯(lián)盟成員可以任意使用和修改SDK包,系統(tǒng)的開源性使其具有良好的拓展性。不僅具有非常好的開發(fā)、調(diào)試環(huán)境,而且還支持各種可擴(kuò)展的用戶體驗(yàn),包括豐富的圖形組件、多媒體支持功能以及強(qiáng)大的瀏覽器。因此,對于軟件從業(yè)人員來說,Android平臺具有無限的吸引力。2013年09月24日Android迎來了5歲生日,全世界采用這款系統(tǒng)的設(shè)備數(shù)量已經(jīng)達(dá)到10億臺。1.2 國內(nèi)外的研究狀況及發(fā)展趨勢近些年來,世界范圍的氣候異常, 使人類面臨日益嚴(yán)重的糧食、能源和水資源危機(jī),因此社會對氣象工作提出了更為迫切的要求。與此同時,遙感技術(shù),電子計(jì)算機(jī)等最新科學(xué)技術(shù)進(jìn)入氣象業(yè)務(wù),形成了新的大氣探測技術(shù),快速通信和計(jì)算處理,從而獲取更多的大氣信息,推動了氣象業(yè)務(wù)的發(fā)展。國外氣象業(yè)務(wù)發(fā)展的一個重要趨勢是日益趨向自動化,即把自動化觀測、數(shù)據(jù)處理、通信及客觀分析、預(yù)報制作和發(fā)布結(jié)合成一個完整的自動化系統(tǒng)。移動設(shè)備性能的不斷提高,無線網(wǎng)絡(luò)從2G提高到3G甚至4G,天氣預(yù)報在科技不斷進(jìn)步的推動下也需要朝著信息多元化演變,應(yīng)該從單純的文字信息逐漸向文字圖像視頻等多種數(shù)據(jù)融合轉(zhuǎn)變。形成了一個集中、統(tǒng)一、數(shù)字化的天氣預(yù)報系統(tǒng),實(shí)現(xiàn)智能終端高效、及時、穩(wěn)定的信息交互。1.3 系統(tǒng)分析及其主要內(nèi)容Android平臺的天氣預(yù)報軟件可以進(jìn)一步擴(kuò)大氣象信息的覆蓋面,讓廣大Android手機(jī)用戶能夠在第一時間獲取最新的天氣預(yù)報信息,以便提前預(yù)防,方便出行。同時,把氣象災(zāi)害造成的損失降到最低,也可以提高公共服務(wù)質(zhì)量,更好的發(fā)揮氣象事業(yè)對經(jīng)濟(jì)社會發(fā)展的現(xiàn)實(shí)性作用,有巨大的實(shí)用價值。該技術(shù)在Android平臺已經(jīng)比較成熟,通過該軟件的開發(fā)讓我們更好的認(rèn)識Android系統(tǒng)的工作原理。本軟件是一個App 應(yīng)用程序,啟動程序后可以切換城市,通過圖片和文字顯示當(dāng)前和未來的天氣狀況,包括溫度、濕度、風(fēng)向和雨雪情況等。這些天氣數(shù)據(jù)通過后臺服務(wù)獲取,后臺服務(wù)可以按照一定時間間隔,從互聯(lián)網(wǎng)上獲取天氣預(yù)報信息,并將天氣信息解析顯示在手機(jī)界面上。從上面的描述中可以基本了解軟件的功能需求:(1) 啟動App應(yīng)用程序注冊登陸。(2) 顯示天氣模塊:通過文字和圖片顯示當(dāng)前的天氣情況,包括日期、時間、城市、最高溫度、最低溫度、當(dāng)前溫度等。(3) 顯示生活模塊:通過文字圖片動畫顯示當(dāng)前的天氣情況,包括城市當(dāng)前天氣、溫度、風(fēng)向、風(fēng)速、濕度;同時顯示今后5天的天氣情況。(4) 我模塊:城市管理,通知提醒,意見反饋,關(guān)于。1.4 論文組織結(jié)構(gòu)本論文討論的是基于android平臺的天氣查詢系統(tǒng)的設(shè)計(jì)與開發(fā),所以本文的組織結(jié)構(gòu)就是圍繞著基于基于android平臺的天氣查詢系統(tǒng)的設(shè)計(jì)與開發(fā)的整個過程來進(jìn)行。第一章 引言。第二章 系統(tǒng)實(shí)現(xiàn)所涉及的技術(shù)。 第三章 安卓開發(fā)環(huán)境配置。第四章 系統(tǒng)總體分析與模型設(shè)計(jì)。第五章 詳細(xì)設(shè)計(jì),對界面模塊設(shè)計(jì)、數(shù)據(jù)解析、曲線圖的畫法進(jìn)行代碼設(shè)計(jì)。 第六章 測試,對設(shè)計(jì)功能進(jìn)行了測試。 文章最后是總結(jié)、致謝與參考文獻(xiàn)等。第2章 系統(tǒng)實(shí)現(xiàn)所涉及的技術(shù)2.1 Android系統(tǒng)概述Android一詞的本義指“機(jī)器人”,同時也是Google于2007年11月5日宣布的基于Linux平臺的開源手機(jī)操作系統(tǒng)的名稱,該平臺由操作系統(tǒng)、中間件、用戶界面和應(yīng)用軟件組成。Android一詞最早出現(xiàn)于法國作家利爾亞當(dāng)(Auguste Villiers de lIsle-Adam)在1886年發(fā)表的科幻小說未來夏娃(Lve future)中。他將外表像人的機(jī)器起名為Android。Android的Logo是由Ascender公司設(shè)計(jì)的,誕生于2010年,其設(shè)計(jì)靈感源于男女廁所門上的圖形符號,1于是布洛克繪制了一個簡單的機(jī)器人,它的軀干就像錫罐的形狀,頭上還有兩根天線,Android小機(jī)器人便誕生了。其中的文字使用了Ascender公司專門制作的稱之為“Droid ” 的字體。Android是一個全身綠色的機(jī)器人,綠色也是Android的標(biāo)志。顏色采用了PMS 376C和RGB中十六進(jìn)制的#A4C639來繪制,這是Android操作系統(tǒng)的品牌象徵。有時候,它們還會使用純文字的Logo。2012年7月美國科技博客網(wǎng)站BusinessInsider評選出二十一世紀(jì)十款最重要電子產(chǎn)品,Android操作系統(tǒng)榜上有名。2.2 Eclipse介紹Eclipse 是一個開放源代碼的、基于Java的可擴(kuò)展開發(fā)平臺。就其本身而言,它只是一個框架和一組服務(wù),用于通過插件組件構(gòu)建開發(fā)環(huán)境。幸運(yùn)的是,Eclipse 附帶了一個標(biāo)準(zhǔn)的插件集,包括Java開發(fā)工具(Java Development Kit,JDK)。Eclipse是一個開放源代碼的軟件開發(fā)項(xiàng)目,專注于為高度集成的工具開發(fā)提供一個全功能的、具有商業(yè)品質(zhì)的工業(yè)平臺。它主要由Eclipse項(xiàng)目、Eclipse工具項(xiàng)目和、Eclipse技術(shù)項(xiàng)目三個項(xiàng)目組成,具體包括四個部分組成Eclipse Platform、JDT、CDT和PDE。JDT支持Java開發(fā)、CDT支持C開發(fā)、PDE用來支持插件開發(fā),Eclipse Platform則是一個開放的可擴(kuò)展IDE,提供了一個通用的開發(fā)平臺。它提供建造塊和構(gòu)造并運(yùn)行集成軟件開發(fā)工具的基礎(chǔ)。Eclipse Platform允許工具建造者獨(dú)立開發(fā)與他人工具無縫集成的工具從而無須分辨一個工具功能在哪里結(jié)束,而另一個工具功能在哪里開始。2.3 Android系統(tǒng)框架Android系統(tǒng)的軟件開發(fā),語言基礎(chǔ)是java語言,通過控件的設(shè)置以及方法調(diào)用,實(shí)現(xiàn)一系列的功能。Android系統(tǒng)提供給應(yīng)用程序開發(fā)者的只是一個框架,在該平臺下開發(fā)應(yīng)用程序必須要遵守這個框架原則。我們開發(fā)的應(yīng)用程序其實(shí)就是在這個框架上進(jìn)行拓展,下面介紹一下android這個框架所提供的功能。Android.app:提供最上層的程序模型和運(yùn)行環(huán)境。Android.content:包含對設(shè)備上的數(shù)據(jù)進(jìn)行訪問和發(fā)布的類。Android.database:Android系統(tǒng)內(nèi)置一個輕量級的SQLite數(shù)據(jù)庫。Android.graphics:底層的圖形庫,包含顏色過濾,畫布,矩形,點(diǎn),可以用來將它們直接繪制到屏幕上。A: 提供用來幫助訪問網(wǎng)絡(luò)的類。Android.location:定位以及與定位有關(guān)的一些類。Android.util:涉及到一些實(shí)用性的方法,例如對時間和日期進(jìn)行操作。Android.media: 提供一些管理多種視頻,音頻的媒體接口。Android.os:提供了系統(tǒng)服務(wù),IPC機(jī)制和消息傳輸。Android.opngl:提供了OpenGL的工具。Avider:提供了訪問Android中的內(nèi)容提供者的類。Android.telephony:提供用來與撥打電話相關(guān)的API交互的類。Android.view: 提供最基本的用戶界面接口框架。Addroid.webkit:提供用來調(diào)用默認(rèn)瀏覽器的接口。Android.widget包含各種UI元素,可以在應(yīng)用程序的布局中使用。2.4 Android四大組件一個Android 應(yīng)用程序,通常由Activity、Intent Receiver、Service、CONtent Provider 四種功能組件構(gòu)成。但是,并不是每一個Android 應(yīng)用程序都需要用到這四種功能組件,而是只需上述四種功能組件的某些組合。(1) ActivityActivity是最基本的Android 應(yīng)用程序組件。大多數(shù)應(yīng)用由多個屏幕組成,一個Activity 通常則是一個單獨(dú)的屏幕。每一個Activity 都被實(shí)現(xiàn)為一個獨(dú)立的類,并且從Activity 基類中繼承而來。Activity 類將會顯示由視圖控件組成的用戶接口,并對事件做出響應(yīng)。Android 使用Intent 這個特殊類,實(shí)現(xiàn)在屏幕與屏幕之間移動。通過解析各種Intent,從一個屏幕導(dǎo)航到另一個屏幕是很簡單的。當(dāng)向前導(dǎo)航時,Activity 將會調(diào)用STartActivity(Intent myIntent)方法,然后,系統(tǒng)會在所有安裝的應(yīng)用程序中所定義的IntentFilter 中查找,找到最匹配myIntent的和Intent 對應(yīng)的Activity.新的Activity 接收到myIntent 的通知后,開始運(yùn)行。當(dāng)startActivity 方法被調(diào)用時將觸發(fā)解析myIntent 的動作。這個機(jī)制具有兩點(diǎn)優(yōu)勢:一是能夠重復(fù)利用從其他組件中以Intent 形式產(chǎn)生的一個請求;二是Activity 可以在任何時候被一個具有相同IntentFilter 的新Activity 取代。Activity的生命周期在Android開發(fā)中,Activity是非常重要的。Activity主要負(fù)責(zé)創(chuàng)建和顯示窗口,也可以把一個Activity理解成一個顯示的屏幕;在Android的應(yīng)用中不是僅有一個Activity,而是由很多個Activity存在。因其重要性,開發(fā)Android務(wù)必熟悉Activity生命周期。onCreateView:Activity初次創(chuàng)建時被調(diào)用,一般在這里創(chuàng)建view,初始化布局信息,將數(shù)據(jù)綁定到list以及設(shè)置監(jiān)聽器等。如果Activity首次創(chuàng)建,本方法將會調(diào)用onStart( );如果是停止后重新顯示,則將調(diào)用onRestart( )。onStart:當(dāng)Activity對用戶即將課件的時候被調(diào)用onResume( )。onRestart:當(dāng)Activity停止后重新顯示的時候被調(diào)用,然后調(diào)用onStart( )。onPause:當(dāng)系統(tǒng)要啟動一個其他的Activity時調(diào)用(其他的Activity顯示之前),這個方法使用來停止動畫和其他占用CPU資源的事情,所以這這里應(yīng)該保存那些持久數(shù)據(jù),這些數(shù)據(jù)可以在onResume( )方法中讀出。onStop:當(dāng)另一個Activity恢復(fù)并遮蓋住當(dāng)前Activity,導(dǎo)致其對用戶不再可見時調(diào)用,一個新的Activity啟動,其他Activity重新回到前景與用戶交互時會重新調(diào)用onResume( ),如果Activity將退出則調(diào)用哦你D額story( )。onDestory:在當(dāng)前Activity被銷毀之前所調(diào)用的最后一個方法,當(dāng)進(jìn)程 終止前調(diào)用。(2) Intent ReceiverIntent Receiver 是實(shí)現(xiàn)的應(yīng)用能夠?qū)σ粋€外部的事件作出響應(yīng)。Intent Receiver 在AndroidManifest.xml 中注冊,也可以在代碼中使用Context.registerReceiver( )進(jìn)行注冊。當(dāng)一個IntentReceiver 被觸發(fā)時,應(yīng)用不必對請求調(diào)用 Intent Receiver,系統(tǒng)會在需要的時候啟動應(yīng)用。各種應(yīng)用還可以通過使用Context.brOAdcastIntent( )將它們自己的Intent Receiver廣播給其他應(yīng)用程序。(3) ServiceService 是一段長生命周期的、沒有用戶界面的程序。例如媒體播放器這個Activity 會使用Context.startService( )來啟動一個Service,從而可以在后臺播放音樂。同時,系統(tǒng)也將保持這個Service 一直執(zhí)行,直到Service 運(yùn)行結(jié)束。系統(tǒng)可通過使用Context.bindService( )方法,連接到一個Service 上(如果這個Service 還沒有運(yùn)行將啟動它)。當(dāng)連接到一個Service 之后,還可以利用Service 提供的接口與它通信。就媒體播放器來說,還可以進(jìn)行暫停、重播等操作。 (4) Content ProviderContent Provider是Android 應(yīng)用程序能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件、SQL 數(shù)據(jù)庫,甚至是任何有效的設(shè)備中。Content Provider 實(shí)現(xiàn)了應(yīng)用數(shù)據(jù)與其他的應(yīng)用程序的共享。Content Provider 類實(shí)現(xiàn)一組標(biāo)準(zhǔn)的方法,能夠讓其他應(yīng)用程序保存或讀取此ContentProvider處理的各種類型數(shù)據(jù)。在Android 中,默認(rèn)使用SQLite 作為系統(tǒng)數(shù)據(jù)庫,但使用方法略有不同。Android 中每一個應(yīng)用程序都運(yùn)行在各自的進(jìn)程中,當(dāng)訪問其他應(yīng)用程序的數(shù)據(jù)時,需要在不同的虛擬機(jī)之間傳遞數(shù)據(jù),這樣操作起來會有些困難(正常情況下,不能讀取其他應(yīng)用程序的數(shù)據(jù)庫文件)。ContentProvider 正是解決不同的應(yīng)用包共享數(shù)據(jù)的工具。2.5 用戶界面Android系統(tǒng)的界面空間分為定制控件。定制空間是用戶獨(dú)立開發(fā)的空間,或者通過繼承并修改系統(tǒng)空間后所產(chǎn)生的新空間,能夠提供特殊的功能和顯示需求。系統(tǒng)控件是Android系統(tǒng)中已經(jīng)封裝好的界面控件,而在代碼中動態(tài)修改需要更新狀態(tài)的界面元素。當(dāng)然,用戶也可以將所有的界面元素,無論在程序運(yùn)行后是否需要修改其內(nèi)容,都放在代碼中進(jìn)行定義和聲明。很明顯這不是一種良好的界面設(shè)計(jì)模式,會給后期界面修改帶來不必要的麻煩,是應(yīng)用程序開發(fā)過程中最常見的功能控件。系統(tǒng)控件更有利于進(jìn)行快速開發(fā),同事能夠使Android應(yīng)用程序的界面保持一定的一致性。常見的系統(tǒng)控件包括TextView、EditView、Button、ImageButton、CheckButton、Spinner、ListView和Tablehost。界面布局(layout)是用戶界面結(jié)構(gòu)的描述,定義界面中所有的元素、結(jié)構(gòu)和相互關(guān)系。一般生命Android程序的界面布局有兩種方法,第一種是使用XML文件描述界面的布局,另一種是在程序運(yùn)行時動態(tài)添加或修改界面布局。Android系統(tǒng)在生命界面布局上提供了很好的靈活性,用戶既可以獨(dú)立使用任何一種聲明布局的方式,也可以同時使用兩種方式。一般情況下,使用XML文件來描述用戶界的基本元素,而在代碼中動態(tài)修改需要更新狀態(tài)的界面元素。當(dāng)然,用戶也可以將所有的界面元素,無論在程序運(yùn)行后是否需要修改其內(nèi)容,都放在代碼中進(jìn)行定義和聲明。很明顯這不是一種良好的界面設(shè)計(jì)模式,會給后期界面修改帶來不必要的麻煩,而且界面較多時,程序代碼也會顯示凌亂不堪。使用XML文件聲明界面布局,能夠更多地將程序的表現(xiàn)層和控制層分離,在修改界面時將不再需要更改程序的源代碼。界面布局的種類:(1) 線性布局:線性布局(LinearLayout)是一種重要的界面布局,也是經(jīng)常使用的界面布局。在線性布局中,所有子元素都在垂直或水平方向按照順序在界面上排序。(2) 框架布局: 框架布局(FrameLayout)是最簡單的界面布局,用來存放一個元素的空白控件,且子元素的位置不能夠制定的,只能夠放置在空白空間的左上角。(3) 表格布局:(TableLayout)也是一種常用的界面布局,它將屏幕劃分為表格,通過制定行和列可以將界面元素添加到表格中。(4) 相對布局:(RelativeLayout)是一種非常靈活的布局方式,能夠通過指定界面元素與其他元素的相對位置關(guān)系,確定界面中所有元素的布局為止。(5) 絕對布局:(AbsoluteLayout)能通過指定界面元素的坐標(biāo)文職,來確定用戶界面的整體布局。2.6 FragmentFragment的主要目的在大屏幕設(shè)備上實(shí)現(xiàn)靈活的、動態(tài)的界面設(shè)計(jì)。例如,在Android的平板電腦上,因?yàn)槠聊挥懈嗟目臻g來配置更多的組件,并且這些組件之間還會產(chǎn)生一定的數(shù)據(jù)交互。Fragment支持這種設(shè)計(jì)理論,開發(fā)人員不需要管理復(fù)雜的試圖結(jié)構(gòu)變化,而且把這些動態(tài)的管理交給Fragment和回退堆棧(back stack)完成,在進(jìn)行界面設(shè)計(jì)時,只需要將界面布局按照功能和取于劃分為不同的模塊,每個模塊設(shè)計(jì)成一個Fragment即可。Fragment具有和Activity類似的生命周期,但是比Activity支持更多的事件回調(diào)函數(shù)。Fragment生命周期中回調(diào)函數(shù)。2.7 網(wǎng)絡(luò)編程之使用HttpClient進(jìn)行Get方式通信基于Android 操作系統(tǒng)的天氣實(shí)況預(yù)報系統(tǒng)設(shè)計(jì)的核心是通過調(diào)用通信協(xié)議SOAP(Simple Object AccessProtocol)的接口,從Web Service 提供商中提取天氣預(yù)報的數(shù)據(jù)信息。采用HttpPost來與后臺交互,然后對數(shù)據(jù)進(jìn)行解析,從中找到需要的數(shù)據(jù)。如下圖所示為提供webservice服務(wù)的網(wǎng)站網(wǎng)絡(luò)拓?fù)鋱D圖 2-1 網(wǎng)絡(luò)拓?fù)鋱D在Android開發(fā)中,Android SDK附帶了Apache的HttpClient,它是一個完善的客戶端。它提供了對HTTP協(xié)議的全面支持,可以使用HttpClient的對象來執(zhí)行HTTP GET和HTTP POST調(diào)用。HTTP工作原理:(1) 客戶端(一般是指瀏覽器,這里是指自己寫的程序)與服務(wù)器建立連接(2) 建立連接后,客戶端向服務(wù)器發(fā)送請求(3) 服務(wù)器接收到請求后,向客戶端發(fā)送響應(yīng)信息(4) 客戶端與服務(wù)器斷開連接HttpClient的一般使用步驟:(1) 使用DefaultHttpClient類實(shí)例化HttpClient對象(2) 創(chuàng)建HttpGet或HttpPost對象,將要請求的URL通過構(gòu)造方法傳入HttpGet或HttpPost對象。(3) 調(diào)用execute方法發(fā)送HTTP GET或HTTP POST請求,并返回HttpResponse對象。(4) 通過HttpResponse接口的getEntity方法返回響應(yīng)信息,并進(jìn)行相應(yīng)的處理。最后記得要在AndroidManifest.xml文件添加網(wǎng)絡(luò)權(quán)限聚合數(shù)據(jù)全國天氣預(yù)報數(shù)據(jù)接口使用HttpClient進(jìn)行Get方式通信,通過HttpClient建立網(wǎng)絡(luò)連接,使用HttpGet方法讀取數(shù)據(jù),并且通過HttpResponse獲取Entity返回值。第3章 開發(fā)環(huán)境配置3.1 Android開發(fā)框架下圖是Android的體系架構(gòu)圖,自上而下分別為應(yīng)用層、應(yīng)用框架、類庫和Alvik運(yùn)行時環(huán)境以及Linux內(nèi)核。圖3.1 Android的體系架構(gòu)圖一般來說,我們想從事Android開發(fā),可以從應(yīng)用開發(fā)作為切入點(diǎn),逐漸熟悉其整個體系,并慢慢往其底層滲透,從而能做到軟硬兼?zhèn)?,Android系統(tǒng)開發(fā)班的課程設(shè)置就充分考慮到了這一點(diǎn),既涉到應(yīng)用開發(fā)的透徹掌握,又幫助大家在系統(tǒng)開發(fā)層面上做好充分的準(zhǔn)備。而從學(xué)習(xí)的路線圖上來說,先熟悉Java SE編程,能比較熟練的使用Java語言進(jìn)行編程,熟悉Java語言語法特點(diǎn),熟悉Java IO、Java線程、網(wǎng)絡(luò)編程、XML處理等。另外,因?yàn)楹芏嗟腁ndroid應(yīng)用在運(yùn)行時都需要去訪問網(wǎng)站服務(wù)器,因此,熟悉一種網(wǎng)絡(luò)編程語言也是必要的。 無論是從開發(fā)班的課程設(shè)置就充分考慮到了這一點(diǎn),既涉到應(yīng)用開發(fā)的透徹掌握,又幫助大家在系統(tǒng)開發(fā)層面上做好充分的準(zhǔn)備。而從學(xué)習(xí)的路線圖上來學(xué)習(xí)的方便性還是市場占有情況來說使用JSP/Servlet都是不二的選擇,另外,在這個階段也順便學(xué)習(xí)一下SQL語法和熟悉一種SQL數(shù)據(jù)庫,以方便后續(xù)Android開發(fā)中進(jìn)行SQLite數(shù)據(jù)庫開發(fā)。學(xué)習(xí)完這些課程后,就可以開始進(jìn)行Android的應(yīng)用開發(fā)的學(xué)習(xí),例如Android中的UI組件、基本組件、數(shù)據(jù)存儲、傳感器、圖形圖像處理、多媒體處理、游戲開發(fā)等。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被改寫過。 Dalvik虛擬機(jī)執(zhí)行的是Dalvik格式的可執(zhí)行文件(.dex)該格式經(jīng)過優(yōu)化,以降低內(nèi)存耗用到最低。Java編譯器將Java源文件為class文件,class文件又被內(nèi)置的dx工具轉(zhuǎn)化為dex格式文件,這種文件在Dalvik虛擬機(jī)上注冊并運(yùn)行。在一些底層功能比如線程和低內(nèi)存管理方面,Dalvik虛擬機(jī)是依賴Linux內(nèi)核的。為了更好地進(jìn)行應(yīng)用編程,可以有選擇的對其Lib類庫進(jìn)行分析,以加深對其工作機(jī)制的理解。再往下,就是操作系統(tǒng)層級了,這里應(yīng)該要對Linux操作系統(tǒng)進(jìn)行學(xué)習(xí),熟悉其內(nèi)核和運(yùn)行原理,熟悉ARM體系架構(gòu)以及常用指令并熟悉驅(qū)動的編寫方式,掌握其移植方法等。Android的核心應(yīng)用程序就是依賴框架層次API開發(fā)的,程序員們可以充分使用這些API。應(yīng)用架構(gòu)設(shè)計(jì)的初衷是,簡化組件復(fù)用機(jī)制,任何應(yīng)用都能發(fā)布自己的功能,這些功能又可以被任何其他應(yīng)用使用,當(dāng)然要受來自框架的強(qiáng)制安全規(guī)范的約束。每個Android應(yīng)用程序都存在于它自己的世界之中,默認(rèn)情況下,每個應(yīng)用程序均運(yùn)行于它自己的Linux進(jìn)程中。當(dāng)應(yīng)用程序中的任意代碼開始執(zhí)行時,Android啟動一個進(jìn)程而當(dāng)不再需要此進(jìn)程而其它應(yīng)用程序又需要系統(tǒng)資源時,則關(guān)閉這個進(jìn)程。 每個進(jìn)程都運(yùn)行于自己的Java虛擬機(jī)(VM)中。所以應(yīng)用程序代碼實(shí)際上與其它應(yīng)用程序的代碼是隔絕的。 默認(rèn)情況下,每個應(yīng)用程序均被賦予一個唯一的Linux用戶ID,并加以權(quán)限設(shè)置,使得應(yīng)用程序的文件僅對這個用戶、這個應(yīng)用程序可見。當(dāng)然,也有其它的方法使得這些文件同樣能為別的應(yīng)用程序所訪問。Android應(yīng)用的構(gòu)成和工作流程如圖圖3.2 Android應(yīng)用的構(gòu)成和工作流程每個Android應(yīng)用程序都存在于它自己的世界之中,默認(rèn)情況下,每個應(yīng)用程序均運(yùn)行于它自己的Linux進(jìn)程中。當(dāng)應(yīng)用程序中的任意代碼開始執(zhí)行時,Android啟動一個進(jìn)程而當(dāng)不再需要此進(jìn)程而其它應(yīng)用程序又需要系統(tǒng)資源時,則關(guān)閉這個進(jìn)程。每個進(jìn)程都運(yùn)行于自己的Java虛擬機(jī)(VM)中。所以應(yīng)用程序代碼實(shí)際上與其它應(yīng)用程序的代碼是隔絕的。默認(rèn)情況下,每個應(yīng)用程序均被賦予一個唯一的Linux用戶ID,并加以權(quán)限設(shè)置,使得應(yīng)用程序的文件僅對這個用戶、這個應(yīng)用程序可見。當(dāng)然,也有其它的方法使得這些文件同樣能為別的應(yīng)用程序所訪問。(l) 應(yīng)用程序架構(gòu): 在應(yīng)用程序架構(gòu)內(nèi)已經(jīng)具備多種不同的基礎(chǔ)組件,在開發(fā)應(yīng)用程序時,就可以直接調(diào)用這些組件來使用,可以節(jié)省開發(fā)應(yīng)用程序的心力及時間。(2) Dalvik虛擬機(jī)器: 在Android平臺上所使用Java虛擬機(jī),不是Sim公司的標(biāo)準(zhǔn)Java虛擬機(jī),而是使用Google自主開發(fā)的代號為Dalvik的虛擬機(jī),它在保證API方面的兼容的同時,針對移動手機(jī)進(jìn)行了大幅優(yōu)化,占用資源更小,運(yùn)行效率更高。(3) 集成的瀏覽器: 集成的瀏覽器是Android內(nèi)建的瀏覽器,是以WebKit的瀏覽引擎為基礎(chǔ)所開發(fā)成的。WedKit是一個開源瀏覽器網(wǎng)頁排版引擎,目前使用WebKit引擎的瀏覽器主要有:Safari、Midori、Epiphany等。配合Android手機(jī)的功能,可以在瀏覽網(wǎng)頁時,達(dá)到更好的效果,例如:局部性的縮放網(wǎng)頁上的資訊、觸控式的操作等效果。 (4) 優(yōu)化的繪圖能力: 在程序里可以用到的繪圖功能分為2D與3D兩個方面。在2D方面Android提供了一套特有的類庫(SGL;而在3D方面則是使用OpenGLES1.0(openGL for Embedded systems)規(guī)范的類庫。它們是一種非??斓膱D形引擎,并且支持硬件加速。(5) SQLite數(shù)據(jù)庫: SQLite提供結(jié)構(gòu)化的數(shù)據(jù)存取。SQLite是一款輕型的數(shù)據(jù)庫,它的設(shè)計(jì)目標(biāo)是嵌入式的,目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用的資源非常低。它能夠支持Windows/Linux/U nix等主流的操作系統(tǒng),同時能夠跟很多程序語言相結(jié)合,比如:php、Java等,還有ODBC接口,同樣比起Mysql、PostgreSQL來講,它的處理速度比它們都快。它無需安裝和管理配置,它是一個儲存在單一磁盤文件中的完整數(shù)據(jù)庫,體積小只有250KB但支持?jǐn)?shù)據(jù)庫大小至2TB。它雖然很小巧,但是支持的SQL語句毫不遜色于其它開源數(shù)據(jù)庫。同時它還支持事務(wù)功能和并發(fā)處理等等。SQLite也是一套開放性的關(guān)聯(lián)式資料庫其特點(diǎn)在于輕量性方面的設(shè)計(jì)結(jié)構(gòu),更適合在手機(jī)上使用。(6) 多媒體的支持能力: 主要用于播放媒體文件。這同時包括對音頻(如播放MP3或其他音樂文件等)和視頻(如播放從網(wǎng)上下載的視頻)的支持,并支持“播放URI地址”(Note:URI即是統(tǒng)一資源識別地址)模式在網(wǎng)絡(luò)上直接播放的流媒體。另外支持各種通用的靜態(tài)圖像格式,例如:JPG、PNG、GIF等格式。(7) GSM技術(shù): Global System for Mobile Communications,即全球移動通訊系統(tǒng),俗稱”全球通”,是一種起源于歐洲的移動通信技術(shù)標(biāo)準(zhǔn),是第二代移動通信技術(shù),其開發(fā)目的是讓全球各地可以共同使用一個移動電話網(wǎng)絡(luò)標(biāo)準(zhǔn),讓用戶使用一部手機(jī)就能行遍全球。GSM技術(shù)是屬于手機(jī)硬件方面的展現(xiàn),。它無需安裝和管理配置,它是一個儲存在單一磁盤文件中的完整數(shù)據(jù)庫,體積小只有250KB但支持?jǐn)?shù)據(jù)庫大小至2TB。它雖然很小巧,但是支持的SQL語句毫不遜色于其它開源數(shù)據(jù)庫。默認(rèn)情況下,每個應(yīng)用程序均運(yùn)行于它自己的Linux進(jìn)程中。當(dāng)應(yīng)用程序中的任意代碼開始執(zhí)行時,Android啟動一個進(jìn)程而當(dāng)不再需要此進(jìn)程而其它應(yīng)用程序又需要系統(tǒng)資源時,則關(guān)閉這個進(jìn)程。每個進(jìn)程都運(yùn)行于自己的Java虛擬機(jī)(VM)中。所以應(yīng)用程序代碼實(shí)際上與其它應(yīng)用程序的代碼是隔絕的。默認(rèn)情況下,每個應(yīng)用程序均被賦予一個唯一的Linux用戶ID,同時它還支持事務(wù)功能和并發(fā)處理等等也是在開發(fā)Android應(yīng)用程序時可以突出的特點(diǎn)之一。 (8) 藍(lán)牙、EDGE、3G及Wi-Fi: 藍(lán)牙是一種新型、開放、低成本、短距離的無線連接技術(shù)可取代短距離的電纜,實(shí)現(xiàn)話音和數(shù)據(jù)的無線傳輸。EDGE(Enhanced Data Rate for GSMEvolution),即增強(qiáng)型數(shù)據(jù)速率GSM演進(jìn)技術(shù)。EDGE是一種從GSM到3G的過渡技術(shù)它主要是在GSM系統(tǒng)中采用了一種新的調(diào)制方法,即最先進(jìn)的多時隙操作和SPSK調(diào)制技術(shù)。由于8PSK可將現(xiàn)有GSM網(wǎng)絡(luò)采用的GMSK調(diào)制技術(shù)的信號空間從2擴(kuò)展到8,從而使每個符號所包含的信息是原來的4倍。Wi-Fi(WirelessFidelity),即無線保真技術(shù),與藍(lán)牙技術(shù)一樣,是一種起源于歐洲的移動通信技術(shù)標(biāo)準(zhǔn),是第二代移動通信技術(shù),其開發(fā)目的是讓全球各地可以共同使用一個移動電話網(wǎng)絡(luò)標(biāo)準(zhǔn),讓用戶使用一部手機(jī)就能行遍全球。GSM技術(shù)是屬于手機(jī)硬件方面的展現(xiàn),這些通訊能力也是屬于手機(jī)硬件方面的展現(xiàn),也是在開發(fā)Android應(yīng)用程序時可以突出的特點(diǎn)之一。(9) GPS: Global Positioning System,即全球定位系統(tǒng),它是一個由覆蓋全球的247 顆衛(wèi)星組成的衛(wèi)星系統(tǒng)。這個系統(tǒng)可以保證在任意時刻和任何地點(diǎn)都可以同時觀測到4顆衛(wèi)星,以保證衛(wèi)星可以采集到該觀測點(diǎn)的經(jīng)緯度和高度,以便實(shí)現(xiàn)導(dǎo)航、定位、授時等功能。這項(xiàng)技術(shù)可以用來引導(dǎo)飛機(jī)、船舶、車輛以及個人。這個同樣也是屬于手機(jī)硬體方面的體現(xiàn)也是在開發(fā)Android應(yīng)用程序是可以突出的特點(diǎn)之一。3.2 開發(fā)所需軟件每個Android的上層應(yīng)用程序是用Java語言開發(fā),同時還需要基于Dalvik 虛擬機(jī),所以,只有Eclipse還不夠,因?yàn)槭鞘褂肑ava語言進(jìn)行開發(fā),還應(yīng)該有由SUN公司提供的JavaJDK(其中包括JRE:Java Runtime Environment)。此外,Android的應(yīng)用程序開發(fā)和Java開發(fā)有較大區(qū)別的,還要有Google提供的AndroidSDK。同時,還需要在Eclipse安裝ADT,為Android開發(fā)提供開發(fā)工具的升級或者變更,是Eclipse下開發(fā)工具的升級下載的工具。簡言之,需要以下軟件,才能搭建Android開發(fā)環(huán)境,從而進(jìn)行Android應(yīng)用程序的開發(fā)。(1) Java JDK(2) Eclipse (3) Android SDK(4) ADT3.2.1 Android開發(fā)環(huán)境配置 Eclipse設(shè)計(jì)的美妙之處,在于所有東西都是外掛,除了底層的核心以外。這種外掛設(shè)計(jì)讓Eclipse具備強(qiáng)大擴(kuò)充性,但更重要的是,此平臺提供一個定義明確的機(jī)制,讓各種外掛程序共通合作(透過延伸點(diǎn)extension points)與貢獻(xiàn)(contributions),因此新功能可以輕易且無縫地加入平臺配置環(huán)境變量步驟:首先,你應(yīng)該已經(jīng)安裝了 java 的 JDK 了,本文安裝的是jdk-7u7-windows-x64;并記錄下安裝目錄C:Program FilesJavajdk1.7.0_07然后進(jìn)入“計(jì)算機(jī)”的“屬性”選項(xiàng),選擇“高級系統(tǒng)設(shè)置”選擇“環(huán)境變量”點(diǎn)擊“環(huán)境變量”之后,接下來就是具體的配置過程(1) 選擇新建“變量名”:Java_Home“變量值”:C:Program FilesJavajdk1.7.0_07注:變量值這一欄主要填寫的是你安裝 java jdk 的路徑,這里根據(jù)個人的情況可能會有所不同(2) 選中環(huán)境變量中的“path”在“變量值”一欄的最前面添加如下的 code:%Java_Home%bin;%Java_Home%jrebin;注意:上面的代碼最好一個字符不要差,因?yàn)?Java_Home 已經(jīng)限制了你的 JDK 的路徑了,Java 的每個版本的 JDK 應(yīng)該都是由這些東西構(gòu)成的(3) 上一步確定之后,再“新建”“變量名”:ClassPath“變值”:.;%Java_Home%bin;%Java_Home%libdt.jar;%Java_Home%libtools.jar注:上面的代碼最好也是一個字符不變的貼上去,變量值最前面的 .; 不要漏掉。做完上面的三個步驟之后,環(huán)境變量的配置已經(jīng)完成了。3.2.2 Eclipse的設(shè)置(1) Eclipse的安裝直接解壓縮 Eclipse3.4.1.zip 到指定目錄 如:F:Androideclipse運(yùn)行eclipse.exe,設(shè)置Workspace,指定一個開發(fā)目錄給它就可以了,Eclipse 安裝完畢(2) 安裝 android-sdkAndroid SDK 同 Eclipse 一樣,直接解壓縮到任意目錄;如E:Android 中就可以將Android SDK中的tools絕對路徑添加到系統(tǒng)PATH中,添加環(huán)境變量PATH 值為SDK中tools的絕對路徑,“確定”后,重新啟動計(jì)算機(jī)。重啟計(jì)算機(jī)以后,SDK安裝成功。(3) 設(shè)定SDK Location打開 Eclipse IDE ,進(jìn)入菜單中的 Window - Preferences;打開Preferences窗口,選中Android;直接設(shè)定SDK Location為SDK的安裝目錄。OK后,再次打開這個窗口,你可以看到SDK列表(4) 安裝 Android Development Tools (ADT)打開 Eclipse IDE;進(jìn)入菜單中的 Help - Software Updates進(jìn)入選項(xiàng)卡Available Software - Add Site Location:輸入/android/eclipse勾選 Android DDMS 和 Android Development Tools ,Install一路Next,注意Accept許可,直到完成。到此,在Windows7下的Android開發(fā)環(huán)境就搭建成功了。第4章 系統(tǒng)總體分析與模型設(shè)計(jì)本章利用模塊圖對基于Android平臺的天氣查詢系統(tǒng)的設(shè)計(jì)與開發(fā)進(jìn)行詳細(xì)的闡述與研究,包括三個模塊:天氣模塊,生活模塊,我模塊。4.1 系統(tǒng)的總體結(jié)構(gòu)圖4-1 系統(tǒng)模塊圖本軟件是一個App應(yīng)用程序,啟動程序后可以切換城市,有一個顯示天氣情況的用戶界面,通過圖片和文字顯示當(dāng)前和未來幾天的天氣狀況,包括溫度、濕度、風(fēng)向和雨雪情況等。這些天氣數(shù)據(jù)是通過后臺服務(wù)獲取的,這個后臺服務(wù)按照一定時間間隔,從互聯(lián)網(wǎng)上上獲取天氣預(yù)報信息,并將天氣信息保存在數(shù)據(jù)庫中。 從上面的描述中可以基本了解軟件的功能需求:(1) 啟動App應(yīng)用程序注冊登陸;(2) 顯示天氣模塊:通過文字和圖片顯示當(dāng)前的天氣情況,包括日期、時間、城市、最高溫度、最低溫度、當(dāng)前溫度等。(3) 顯示生活模塊:穿衣/雨具/紫外線/洗車等生活指數(shù)。(4) 我模塊:城市管理,通知提醒,意見反饋,關(guān)于。4.2 功能分析從上面的描述中可以基本了解軟件的基本功能,但為了將需求分析過程變得簡單明了,首先找出用戶界面上需要顯示的內(nèi)容。功能描述中有“顯示天氣情況的用戶界面”除此以外,一般應(yīng)用軟件還應(yīng)有顯示配置信息的界面。因此,本示例應(yīng)該包含三個用戶界面:顯示天氣模塊的界面,生活模塊界面,我模塊界面4.2.1 天氣模塊功能分析(1) 模塊功能概述天氣模塊的功能有:實(shí)時天氣、未來一周的天氣、一周溫度曲線圖、下拉刷新。模塊功能如圖4-2所示: 圖4-2 天氣模塊圖(2) 模塊功能特點(diǎn)實(shí)時天氣:顯示所選城市實(shí)時天氣狀況,包括城市名稱、天氣描述、 溫度高低、風(fēng)速、天氣描述圖片、日期、星期。此界面是應(yīng)用程序的主界面,所以在設(shè)計(jì)時應(yīng)盡量使界面美觀,將天氣數(shù)據(jù)以用戶容易接受的方式呈現(xiàn)出來;未來天氣:對未來6天的天氣情況簡要描述,天氣描述、溫度高低等數(shù)據(jù),使用戶一目了然,使人們及時了解天氣變化,對日常生活出行、穿衣做好準(zhǔn)備;打開應(yīng)用程序就可以直接看到該城市的天氣狀況。一周溫度曲線圖:更加形象的描述一周最高溫、最低溫的天氣變化,方便用戶及時獲取天氣信息。下拉刷新:觸摸屏幕下拉到一定幅度,從網(wǎng)上重新獲取數(shù)據(jù)加載最新的天氣信息,方便用戶準(zhǔn)確的獲取實(shí)時天氣。4.2.2 生活模塊功能分析(1) 模塊功能概述生活模塊的功能有:穿衣/雨具/紫外線/洗車等,獲取實(shí)時的天氣信息,方便用戶生活。模塊功能如圖4-3所示: 圖4-3 生活模塊圖(2) 模塊功能特點(diǎn)打開生活模塊,就能看到所選城市的日期、實(shí)時天氣信息,穿衣指數(shù)、穿衣建議、紫外線等生活信息,方便用戶獲取天氣信息,讓生活更加舒適。4.2.3 我模塊功能分析(1) 模塊功能概述我模塊的功能有:城市管理、通知提醒、意見反饋、關(guān)于。模塊功能圖4-4所示: 圖4-4 我模塊圖(2) 模塊功能特點(diǎn)城市管理:可以切換城市,用戶選擇查詢城市的天氣信息,這個可以加入定位功能,自動定位到用戶所在地點(diǎn),還有待完善。通知提醒:打開以后,實(shí)時天氣常駐通知欄,提醒用戶天氣信息,提醒內(nèi)容包括:所選城市的溫度,風(fēng)向、風(fēng)力、濕度、更新時間等意見反饋:使用過程中一切問題都可以反饋,方便了解軟件的使用情況,以及需要添加的功能。關(guān)于:軟件的版本信息。4.3 系統(tǒng)流程圖啟動程序后顯示所選城市的天氣信息,通過圖片和文字顯示天氣狀況,主要有溫度、濕度、風(fēng)向和雨雪情況等。這些天氣數(shù)據(jù)是通過后臺服務(wù)獲取的,這個后臺服務(wù)可以按照一定時間間隔,從互聯(lián)網(wǎng)上獲取天氣預(yù)報信息。系統(tǒng)流程如圖4-5所示:圖4-5 系統(tǒng)流程圖本軟件先注冊再登陸,默認(rèn)天氣是鄭州,登陸之后顯示鄭州的天氣信息和生活指數(shù),在我模塊可以切換其他城市,同時重新加載所選城市的天氣信息和生活指數(shù)。第5章 詳細(xì)設(shè)計(jì)本章將探討基于Android平臺的天氣查詢系統(tǒng)的設(shè)計(jì)與開發(fā)的詳細(xì)設(shè)計(jì)與實(shí)現(xiàn)。5.1 新建工程在程序開發(fā)階段,首先確定“天氣預(yù)報軟件”的工程名稱為TKWeather,然后根據(jù)程序模塊設(shè)計(jì)的內(nèi)容,建立TKWeather工程,TKWeather的工程文件結(jié)構(gòu)如下所示:圖5-1 工程目錄為了使源代碼文件的結(jié)構(gòu)更加清晰,TKWeather示例設(shè)置了多個命名空間中,分別用來保存用戶界面、數(shù)據(jù)庫、后臺服務(wù)、和天氣數(shù)據(jù)的源代碼文件 cn.kim.tkweather.activity窗體頁面源代碼包c(diǎn)n.kim.tkweather.adapter適配器源代碼包c(diǎn)n.kim.tkweather.bean數(shù)據(jù)實(shí)體類cn.kim.tkweather.fragmentFragment包c(diǎn)n.kim.tkweather.service服務(wù)層源碼包c(diǎn)n.kim.tkweather.ui自定義控件包c(diǎn)n.kim.tkweather.utils工具類源碼包Android資源文件保存在/res的子目錄中 。/res/drawable目錄中保存的是圖像文件, /res/layout目錄中保存的是布局文件 ,/res/values目錄中保存的是用來定義字符串和顏色的文件 ,/res/xml目錄保存的是XML格式的數(shù)據(jù)文件 。所有在程序開發(fā)階段可以被調(diào)用的資源都保存在這些目錄中 。5.2 Android UI界面的實(shí)現(xiàn)在Android中用戶界面都是布局在XML文件中的。這些XML文件放在工程/res/layout下面。這對以前熟悉java可視化編程的人來說可能有些不太習(xí)慣。可能有人疑問為什么要把布局文件放在XML文件里呢?其實(shí)有過web基礎(chǔ)的都應(yīng)該知道m(xù)vc框架,這是一種用于網(wǎng)站開發(fā)的非常優(yōu)秀的思想,在安卓系統(tǒng)中,安卓開發(fā)人員把用戶界面放在XML文檔中定義,這樣就可以讓XML文檔專門負(fù)責(zé)用戶UI界面設(shè)置,而java程序?qū)iT負(fù)責(zé)業(yè)務(wù)實(shí)現(xiàn),從而降低程序的耦合,便于程序的維護(hù)和擴(kuò)展,符合mvc設(shè)計(jì)思想。在XML中Android開發(fā)人員放置了很多我們經(jīng)常用到的一些組件,比如view,Button,EditText等,通過這些系統(tǒng)提供的控件,我們可以開發(fā)出我們想要的程序界面來。Layout 是一類特殊的ViewGroup 控件,它們本身并不顯示任何的內(nèi)容,存在的惟一原因就是其中的內(nèi)部結(jié)構(gòu),能夠更好地擺放它的子控件。比如Linearlayout(線性布局),可將子控件按水平或垂直方向按順序排列下去;Tablelayout(表格布局),可以將子控件按照表格的形式,一枚枚放置好;Relativelayout(相對布局),實(shí)際應(yīng)用中這個布局更靈活,它可以設(shè)定各個控件之間的對齊和排列關(guān)系,適合
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 第9.3課 《虞美人》(同步課件)-【中職專用】2024-2025學(xué)年高一語文課堂(高教版2023·基礎(chǔ)模塊下冊)
- 2025屆高考考前指導(dǎo)【19】思維入格邏輯嚴(yán)密-議論文主體段寫作 課件
- 六西格瑪與AI質(zhì)量優(yōu)化
- Brand KPIs for online betting:in the United States-英文培訓(xùn)課件2025.5
- 2025屆高考物理大一輪復(fù)習(xí)課件 第七章 第33課時 動量 動量定理
- 江蘇省宿遷市泗陽縣2024-2025學(xué)年高一下學(xué)期期中調(diào)研生物試卷(有答案)
- 象棋中級試題及答案
- 海南省瓊海市2023-2024學(xué)年七年級下學(xué)期期末考試歷史試卷(含答案)
- 2025年江蘇省蘇州市高新區(qū)實(shí)驗(yàn)初級中學(xué)中考三模英語試題(含答案無聽力音頻及原文)
- 英語●全國甲卷丨2022年普通高等學(xué)校招生全國統(tǒng)一考試英語試卷及答案
- 2025國開電大《管理英語1》綜合測試形考任務(wù)答案
- 會計(jì)領(lǐng)軍筆試題目及答案
- 靜脈治療考試試題及答案
- 2024初級注冊安全工程師筆試模擬題帶答案
- 2025年濱州國有資本投資運(yùn)營集團(tuán)有限公司招聘筆試參考題庫附帶答案詳解
- PVC拆除施工方案
- 2025年托育服務(wù)宣傳月活動總結(jié)(普惠托育科學(xué)育兒)
- 2025年山東省煙草專賣局(公司)高校畢業(yè)生招聘(208名)筆試參考題庫附帶答案詳解
- 中考數(shù)學(xué)復(fù)習(xí)-中檔題訓(xùn)練(四)(含答案)
- 醫(yī)學(xué)實(shí)驗(yàn)室質(zhì)量控制知識試題及答案
- 駕駛員消防安全培訓(xùn)
評論
0/150
提交評論