2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩44頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(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平臺(tái)的天氣軟件開(kāi)發(fā) </p><p>  ——界面設(shè)計(jì)及異常處理 </p><p>  指導(dǎo)老師 職 稱(chēng) </p><p>  基于Android平臺(tái)的天氣軟件開(kāi)發(fā)</p><p>

2、  ——界面設(shè)計(jì)及異常處理</p><p><b>  摘 要</b></p><p>  隨著科技的發(fā)展,移動(dòng)智能終端逐漸走進(jìn)人們的視線,相關(guān)應(yīng)用越來(lái)越廣泛,并在人們的日常生活中扮演著越來(lái)越重要的角色。因此,關(guān)鍵應(yīng)用程序的開(kāi)發(fā)成為影響移動(dòng)智能終端普及的重要因素,設(shè)計(jì)并開(kāi)發(fā)實(shí)用、方便的應(yīng)用程序具有重要的意義和良好的市場(chǎng)前景。Android作為當(dāng)前最流行的操作平臺(tái),自

3、然也存在著大量的應(yīng)用服務(wù)需求。</p><p>  本課題研究的是基于Android平臺(tái)下的天氣軟件,目的是幫助用戶(hù)隨時(shí)隨地查詢(xún)天氣信息及天氣變化情況,讓生活更加舒適方便。本文詳細(xì)講述了Android平臺(tái)下天氣軟件的界面設(shè)計(jì)及異常處理部分,主要包括界面的實(shí)現(xiàn)、控件的使用、界面的布局和異常的處理等內(nèi)容,結(jié)合中國(guó)氣象網(wǎng)的天氣數(shù)據(jù),將準(zhǔn)確的天氣情況以友好的方式呈現(xiàn)給用戶(hù),使用戶(hù)可以更加賞心悅目地體驗(yàn)本軟件的服務(wù)。<

4、;/p><p>  關(guān)鍵字 Android/界面/控件/天氣軟件</p><p>  ANDROID PLATFORM-BASED WEATHER </p><p>  SOFTWARE DEVELOPMENT</p><p>  ——VIEW AND EXCEPTION</p><p><b>  Abstr

5、act</b></p><p>  With the development of science and technology, the mobile terminal gradually into the people's attention, related to more widely, and play an increasingly important role in people

6、's daily lives. Therefore, the development of critical applications has become an important factor in the popularity of the mobile terminal, the design and development of practical, convenient application is of great

7、 significance and good market prospects. Android as the most popular operating platform, naturally, ther</p><p>  The study of this topic is the weather software, based on the Android platform is designed to

8、 help the user to query weather information and weather changes anytime, anywhere, to make life more comfortable and convenient. This paper describes the software interface design of the Android platform under the weathe

9、r and exception handling part, including the contents of the interface implementation, the use of controls, the layout of the interface, and exception handling, combined with weather data</p><p>  KEY WORDS

10、 Android,interface,control,weather software</p><p><b>  目 錄</b></p><p><b>  中文摘要i</b></p><p><b>  英文摘要ii</b></p><p>  目 錄iii&

11、lt;/p><p><b>  1 緒論1</b></p><p>  1.1 研究?jī)?nèi)容1</p><p>  1.2 研究目的和意義1</p><p>  1.3 研究前景1</p><p>  2 Android開(kāi)發(fā)環(huán)境及平臺(tái)搭建3</p><p>  2.1 A

12、ndroid開(kāi)發(fā)環(huán)境介紹3</p><p>  2.2 Android開(kāi)發(fā)平臺(tái)搭建3</p><p><b>  3 項(xiàng)目分析5</b></p><p>  3.1 用戶(hù)界面5</p><p>  3.2 異常分析5</p><p>  3.3 相關(guān)技術(shù)介紹6</p>&

13、lt;p>  3.3.1 Activity6</p><p>  3.3.2 Intent6</p><p>  3.3.3 Service7</p><p>  3.3.4 Layout布局8</p><p>  3.3.5 控件介紹8</p><p>  4 界面設(shè)計(jì)及實(shí)現(xiàn)11</p>

14、<p>  4.1 加載界面11</p><p>  4.2 實(shí)時(shí)天氣界面14</p><p>  4.3 未來(lái)天氣界面21</p><p>  4.4 選擇城市界面27</p><p>  4.5 版權(quán)及Logo設(shè)計(jì)30</p><p><b>  5 異常處理31</b&g

15、t;</p><p>  5.1 聯(lián)網(wǎng)異常31</p><p>  5.2 解析異常31</p><p><b>  6 界面測(cè)試33</b></p><p><b>  總結(jié)38</b></p><p><b>  致 謝39</b><

16、;/p><p><b>  參考文獻(xiàn)40</b></p><p><b>  1 緒論</b></p><p><b>  1.1 研究?jī)?nèi)容</b></p><p>  本文介紹了基于Android平臺(tái)下天氣軟件的界面及異常處理部分內(nèi)容,詳細(xì)介紹了加載界面、實(shí)時(shí)天氣界面、未來(lái)天氣

17、界面和搜索界面進(jìn)行界面設(shè)計(jì)及實(shí)現(xiàn),出現(xiàn)異常情況的處理等內(nèi)容,目的是使用戶(hù)能夠更加賞心悅目地體驗(yàn)此軟件帶來(lái)的服務(wù)。通過(guò)對(duì)界面的布局及控件的應(yīng)用等相關(guān)內(nèi)容的學(xué)習(xí),使我們對(duì)Android平臺(tái)下界面開(kāi)發(fā)工作有一個(gè)初步的了解,并且經(jīng)過(guò)這次開(kāi)發(fā)過(guò)程,能夠基本掌握這些內(nèi)容。軟件開(kāi)發(fā)后能夠幫助用戶(hù)隨時(shí)隨地搜索由中國(guó)氣象局提供的全國(guó)2564個(gè)縣級(jí)以上城市的天氣信息,并且把數(shù)據(jù)顯示在一個(gè)界面美觀、布局合理窗口內(nèi),使用戶(hù)能夠舒適的享受軟件帶來(lái)的服務(wù)。<

18、/p><p>  1.2 研究目的和意義</p><p>  天氣軟件是一種非常實(shí)用的信息服務(wù),隨著智能手機(jī)的不斷普及,各種智能手機(jī)平臺(tái)下都有各種各樣的天氣軟件。Android作為現(xiàn)在主流的智能手機(jī)之一,自然也需要這方面的軟件。天氣關(guān)系到人們的日常生活,如告知溫暖,方便出行等。此外,對(duì)未來(lái)天氣的預(yù)測(cè)還可以幫助人們進(jìn)行農(nóng)作物的澆灌、施肥、收割等工作。</p><p>  

19、基于Android平臺(tái)的天氣軟件已經(jīng)有很多,經(jīng)過(guò)分析,用戶(hù)第一眼往往是一個(gè)軟件的外觀,一個(gè)好看的界面才能讓用戶(hù)以一種愛(ài)美之心去嘗試,才能進(jìn)一步了解一個(gè)軟件的好壞,所以吸引眼球的界面是爭(zhēng)取用戶(hù)的第一步。因此,界面設(shè)計(jì)工作對(duì)應(yīng)用程序來(lái)說(shuō)非常重要,在界面上吸引了用戶(hù),才能進(jìn)一步讓用戶(hù)體驗(yàn)應(yīng)用程序中的功能,使用這個(gè)軟件。</p><p><b>  1.3 研究前景</b></p>&

20、lt;p>  Android在中國(guó)的前景十分廣闊,首先是有成熟的消費(fèi)者,在國(guó)內(nèi),Android社區(qū)十分紅火,這些社區(qū)為Android在中國(guó)的普及做了很好的推廣作用。國(guó)內(nèi)廠商和運(yùn)營(yíng)商也紛紛加入了Android陣營(yíng),包括中國(guó)移動(dòng),中國(guó)聯(lián)通,中興通訊,華為通訊,聯(lián)想等大企業(yè),同時(shí)不僅僅局限于手機(jī),國(guó)內(nèi)廠家也陸續(xù)推出了采用Android系統(tǒng)的產(chǎn)品,我們可以預(yù)見(jiàn)Android將會(huì)被廣泛應(yīng)用在國(guó)產(chǎn)智能上網(wǎng)設(shè)備上,將進(jìn)一步擴(kuò)大Android系統(tǒng)

21、的應(yīng)用范圍。另一方面,由于國(guó)內(nèi)政策的限制,導(dǎo)致Android的部分功能(如Android market)在國(guó)內(nèi)無(wú)法正常使用,目前常用的解決方法是使用VPN服務(wù)來(lái)訪問(wèn)。</p><p>  Android的主要競(jìng)爭(zhēng)對(duì)手是蘋(píng)果公司的IOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市場(chǎng)份額首次超過(guò)塞班系統(tǒng),躍居全球第一。2012年2月數(shù)據(jù),Android占據(jù)全球智能手機(jī)操作系統(tǒng)市

22、場(chǎng)52.5%的份額,中國(guó)市場(chǎng)占有率為68.4%,在美國(guó)手機(jī)市場(chǎng)的占有率達(dá)到了47.3%。到二月下旬Google公司正式宣布,Android設(shè)備每天激活量達(dá)到85萬(wàn)臺(tái),通過(guò)Google服務(wù)器激活的Android設(shè)備用戶(hù)總數(shù)突破3億臺(tái),距離2012年1月的數(shù)量,在短短1個(gè)月時(shí)間內(nèi)全球共賣(mài)出5000萬(wàn)臺(tái)安卓設(shè)備,平均每秒鐘就賣(mài)出15臺(tái)安卓設(shè)備。 Google官方數(shù)據(jù)顯示,Android電子市場(chǎng)(Android Market)上的應(yīng)用程

23、序數(shù)量已經(jīng)突破45萬(wàn)個(gè),一年內(nèi)增加30萬(wàn)個(gè)。相信在不久的將來(lái)會(huì)有更多的用戶(hù)選擇Android系統(tǒng)的手機(jī)。Android是以Linux為核心的手機(jī)操作平臺(tái),作為一款開(kāi)放式的操作系統(tǒng),隨著Android的快速發(fā)展,如今已允許開(kāi)發(fā)者使用多種編程語(yǔ)言來(lái)開(kāi)發(fā)Android應(yīng)用程序,而不再是以前只能使用Java開(kāi)發(fā)Android應(yīng)用程序的單一</p><p>  2 Android開(kāi)發(fā)環(huán)境及平臺(tái)搭建</p>&

24、lt;p>  2.1 Android開(kāi)發(fā)環(huán)境介紹</p><p>  Android平臺(tái)使用Java編程語(yǔ)言來(lái)開(kāi)發(fā)應(yīng)用程序,而Android提供了對(duì)Java的核心支持??紤]到Java虛擬機(jī)的執(zhí)行效率和占用資源情況,Google重新設(shè)計(jì)了Java的編譯器,命名為Dalvik。Dalvik是經(jīng)過(guò)優(yōu)化的Java編譯器,允許在有限的內(nèi)存中同時(shí)運(yùn)行多個(gè)虛擬機(jī)的實(shí)例,并且每一個(gè)Dalvik應(yīng)用作為一個(gè)獨(dú)立的Linux進(jìn)

25、程執(zhí)行,獨(dú)立的進(jìn)程可以防止在虛擬機(jī)崩潰的時(shí)候所有程序都被關(guān)閉。</p><p>  項(xiàng)目的開(kāi)發(fā)在Eclipse環(huán)境中進(jìn)行,由于進(jìn)行的是Android應(yīng)用程序的開(kāi)發(fā),需要在Eclipse安裝ADT插件,即Android開(kāi)發(fā)工具,這樣Eclipse就可以和Android SDK建立連接,在Eclipse中啟動(dòng)Android模擬器、調(diào)試程序等工作。</p><p>  由以上分析可知,Andro

26、id平臺(tái)的搭建需要Android SDK、Java SDK、Eclipse和ADT四個(gè)軟件。</p><p>  2.2 Android開(kāi)發(fā)平臺(tái)搭建</p><p>  在進(jìn)行Android應(yīng)用程序的開(kāi)發(fā)前,要先搭建Android平臺(tái),然后才能在開(kāi)發(fā)環(huán)境中進(jìn)行編程。根據(jù)官方指導(dǎo),對(duì)Android平臺(tái)的搭建過(guò)程介紹如下:</p><p>  首先,在官方網(wǎng)址上下載JD

27、K6.0并安裝,網(wǎng)址是http://www.oracle.com/technetwork/java/javase/downloads/index.html,安裝后設(shè)置系統(tǒng)環(huán)境變量JAVA_HOME、CLASS_PATH、PATH的值;</p><p>  然后,在官方網(wǎng)址上下載更新的SDK進(jìn)行安裝,官方網(wǎng)址為http://development.android.com/sdk/index.html,下載完后解壓到

28、指定文件夾,啟動(dòng)SDK Manager進(jìn)行安裝,選擇需要的Android版本,然后更新,這次更新需要的時(shí)間比較慢,所以更新前要做好準(zhǔn)備。安裝完成后,將ADB命令所在的目錄platform-tools的完整路徑添加到系統(tǒng)的環(huán)境變量PATH中,就能夠在命令中使用ADB命令了;</p><p>  接下來(lái)要安裝的是ADT插件,即Android開(kāi)發(fā)工具。因?yàn)锳DT在線安裝容易遇到問(wèn)題,增加一些不必要的麻煩所以需要下載后在

29、本地安裝。指定網(wǎng)址為http://development.android.com/sdk/index.html,下載存放在指定的位置以便后面使用;</p><p>  最后,下載Eclipse,建議選擇Eclipse3.4以上版本,網(wǎng)址為http://www.eclipse.org/downloads/,解壓到指定位置后運(yùn)行。選擇Eclipse菜單中的Help>Install New Software選項(xiàng)卡

30、上的Available Software,點(diǎn)擊右側(cè)的Add,然后在Name框中填寫(xiě)Android,在Location框中選擇上步下載的ADT文件,然后點(diǎn)擊OK>Finish>Install All,這時(shí)關(guān)閉Eclipse再重新啟動(dòng)。重啟后選擇Eclipse菜單中的Window>Preferences,在左側(cè)的Android項(xiàng)目中SDK Location中填入Android SDK解壓后的目錄,然后點(diǎn)擊Apply。<

31、;/p><p>  這樣,整個(gè)平臺(tái)的搭建工作就完成了。</p><p><b>  3 項(xiàng)目分析</b></p><p><b>  3.1 用戶(hù)界面 </b></p><p>  根據(jù)應(yīng)用程序的功能需要,對(duì)用戶(hù)界面做如下分析:</p><p>  加載界面:程序開(kāi)始運(yùn)行時(shí)顯示加

32、載界面,此界面是應(yīng)用程序最先展示的窗口,所以,要盡量保持界面信息簡(jiǎn)潔,突出重點(diǎn)。這里設(shè)置為顯示學(xué)校的名稱(chēng)、英文縮寫(xiě)及版權(quán)信息。此界面的作用是,不僅將軟件的基本信息顯示給用戶(hù),而且在加載的過(guò)程中進(jìn)行數(shù)據(jù)的初始化工作,將應(yīng)用程序運(yùn)行時(shí)需要的天氣信息提前做準(zhǔn)備;</p><p>  實(shí)時(shí)天氣界面:顯示城市當(dāng)前的實(shí)時(shí)天氣狀況,包括城市名稱(chēng)、天氣描述、溫度高低、風(fēng)速、天氣描述圖片、獲取數(shù)據(jù)時(shí)間、日期、星期、溫馨提示和是否默

33、認(rèn)城市等信息。此界面是應(yīng)用程序的主界面,所以在設(shè)計(jì)的時(shí)候應(yīng)盡量使界面美觀,將天氣數(shù)據(jù)以用戶(hù)所容易接受的方式呈現(xiàn)出來(lái);</p><p>  未來(lái)天氣界面:對(duì)未來(lái)6天的天氣情況簡(jiǎn)要描述,簡(jiǎn)要顯示星期、天氣描述、溫度高低等數(shù)據(jù),使用戶(hù)一目了然,使人們及時(shí)了解天氣變化,對(duì)日常生活出行、穿衣做好準(zhǔn)備;</p><p>  選擇城市界面:用戶(hù)可以根據(jù)需要選擇全國(guó)2564個(gè)縣級(jí)以上城市并查看該城市的天氣

34、情況。在選擇后,用戶(hù)可以把該城市設(shè)置為默認(rèn),再次打開(kāi)應(yīng)用程序就可以直接看到該城市的天氣狀況。</p><p>  經(jīng)過(guò)以上分析可知,應(yīng)用程序共需要四個(gè)界面,即加載界面、實(shí)時(shí)天氣界面、未來(lái)天氣界面、選擇城市界面,來(lái)實(shí)現(xiàn)應(yīng)用程序中的基本功能。</p><p><b>  3.2 異常分析</b></p><p>  當(dāng)應(yīng)用程序中的界面沒(méi)有正常顯示天

35、氣數(shù)據(jù),出現(xiàn)假死或者跑出程序錯(cuò)誤時(shí),視為程序異常。</p><p>  經(jīng)過(guò)分析,應(yīng)用程序在連接網(wǎng)絡(luò)和解析數(shù)據(jù)時(shí),容易出現(xiàn)異常,所以在設(shè)計(jì)的時(shí)候應(yīng)仔細(xì)分析原因,并且認(rèn)真對(duì)待,在出現(xiàn)異常的地方給出具體解決方案,使用戶(hù)享受到更友好的體驗(yàn)。</p><p>  3.3 相關(guān)技術(shù)介紹</p><p>  3.3.1 Activity</p><p>

36、  在Android應(yīng)用程序中,一個(gè)活動(dòng)Activity通常就是一個(gè)單獨(dú)的界面。每一個(gè)界面都被實(shí)現(xiàn)為一個(gè)獨(dú)立的類(lèi),并且從Activity基類(lèi)中繼承而來(lái),Activity將會(huì)顯示由空間組成的用戶(hù)接口,并對(duì)事件做出響應(yīng)。大多數(shù)的應(yīng)用都是由多個(gè)Activity顯示組成,例如,第一個(gè)界面用來(lái)顯示加載界面,第二界面用來(lái)顯示實(shí)時(shí)天氣界面,第三個(gè)界面用來(lái)顯示未來(lái)一周的天氣界面。</p><p>  這里的每一個(gè)界面就是一個(gè)Ac

37、tivity,很容易是從一個(gè)界面到一個(gè)新的界面,并且完成新的Activity。當(dāng)一個(gè)新的界面打開(kāi)后,前一個(gè)界面將會(huì)暫停,并保留在歷史棧中。用戶(hù)可以返回到歷史棧中的前一個(gè)界面,當(dāng)界面不再使用時(shí),從歷史棧中刪除。</p><p>  簡(jiǎn)單理解,Activity代表一個(gè)用戶(hù)所能看到的界面,主要用于處理應(yīng)用程序的整體性工作,例如,監(jiān)聽(tīng)系統(tǒng)事件(按鍵事件、觸摸屏事件等),為用戶(hù)顯示指定的View,啟動(dòng)其他Activity等

38、。所有應(yīng)用的Activity都繼承于android.app.Activity類(lèi),該類(lèi)是Android提供的基層類(lèi),其他的Activity繼承該父類(lèi)后,通過(guò)父類(lèi)的方法實(shí)現(xiàn)各種功能,這種設(shè)計(jì)在其他領(lǐng)域也較為常見(jiàn)。</p><p>  3.3.2 Intent</p><p>  Android基本的設(shè)計(jì)理念是鼓勵(lì)減少組件間的耦合,因此Android提供了Intent(意圖),Intent提供了

39、一種通用的消息系統(tǒng),它允許在你的應(yīng)用程序與其他的應(yīng)用程序間傳遞Intent來(lái)執(zhí)行動(dòng)作和產(chǎn)生時(shí)間。使用Intent可以激活A(yù)ndroid應(yīng)用的三個(gè)核心組件:活動(dòng)、服務(wù)和廣播接收器。</p><p>  Intent可以劃分為顯示意圖和隱式意圖。顯示意圖調(diào)用Intent。SetClass方法明確制定了組件名的Intent為顯示意圖,顯示意圖明確制定了Intent應(yīng)該傳遞給那個(gè)組件,在同一個(gè)應(yīng)用內(nèi)部使用的。隱式意圖沒(méi)有

40、明確指定組件名的Intent為隱式意圖。Android系統(tǒng)會(huì)根據(jù)隱式意圖中設(shè)置的動(dòng)作(action)、類(lèi)別(category)、數(shù)據(jù)(URI和數(shù)據(jù)類(lèi)型)找到最合適的組件來(lái)處理這個(gè)意圖。</p><p>  Intent負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及數(shù)據(jù)和附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。因此,Intent在這里

41、起著一個(gè)媒體中介的作用,專(zhuān)門(mén)提供組件互相調(diào)用的相關(guān)信息,實(shí)現(xiàn)調(diào)用者與被調(diào)用者之間的結(jié)構(gòu)。</p><p>  3.3.3 Service</p><p>  如果把Activity比喻為前臺(tái)程序,那么Service就是后臺(tái)程序,Service的整個(gè)生命周期都只會(huì)在后臺(tái)執(zhí)行。Service跟 Activity一樣也由Intent調(diào)用。由于Service在后臺(tái)運(yùn)行,所以沒(méi)有界面,用來(lái)處理耗時(shí)比

42、較長(zhǎng),而且Service不是一個(gè)單獨(dú)的進(jìn)程,也不是一個(gè)單獨(dú)的線程。Service有兩種類(lèi)型:</p><p>  本地服務(wù)(Local Service):用于應(yīng)用程序內(nèi)部;</p><p>  遠(yuǎn)程服務(wù)(Remote Sercie):用于android系統(tǒng)內(nèi)部的應(yīng)用程序之間;</p><p>  前者用于實(shí)現(xiàn)應(yīng)用程序自己的一些耗時(shí)任務(wù),比如查詢(xún)升級(jí)信息,并不占用應(yīng)用

43、程序比如Activity所屬線程,而是單開(kāi)線程后臺(tái)執(zhí)行,這樣用戶(hù)體驗(yàn)比較好。后者可被其他應(yīng)用程序復(fù)用,例如天氣預(yù)報(bào)服務(wù),其他應(yīng)用程序不需要再寫(xiě)這樣的服務(wù),調(diào)用已有的即可。</p><p>  Service的生命周期,Service有startService和bindService兩種啟動(dòng)Service方法,每種方法Service的生命周期是不一樣的。</p><p>  通過(guò)startS

44、ervice() —— Service會(huì)經(jīng)歷 onCreate --> onStartCommand(),stopService的時(shí)候直接onDestroy,如果是調(diào)用者直接退出而沒(méi)有調(diào)用stopService的話(huà),Service會(huì)一直在后臺(tái)運(yùn)行,下次調(diào)用者再起來(lái)仍然可以stopService;</p><p>  通過(guò)bindService() —— Service只會(huì)運(yùn)行onCreate()-->

45、onBind() 這個(gè)時(shí)候調(diào)用者和Service綁定在一起 unbindService的時(shí)候onUnbind() --> onDestroyed(),調(diào)用者退出了,Srevice就會(huì)調(diào)用onUnbind() --> onDestroyed()。在這里需要注意的是Service的onCreate的方法只會(huì)被調(diào)用一次,就是你無(wú)論多少次的startService又 bindService,Service只被創(chuàng)建一次。如果先是bin

46、d了,那么start的時(shí)候就直接運(yùn)行Service的onStart方法,如果先是start,那么bind的時(shí)候就直接運(yùn)行onBind方法。如果你先bind上了,就stop不掉了,只能先UnbindService, 再StopService,所以是先start還是先bind行為是有區(qū)別的。</p><p>  3.3.4 Layout布局</p><p>  布局方式有很多種,比如線性布局(

47、Linear Layout)、相對(duì)布局(Relative Layout)、表格布局(Table Layout)、網(wǎng)格視圖(Grid View)、標(biāo)簽布局(Tab Layout)、列表視圖(List View)和絕對(duì)布局(Absolute Layout)。本文設(shè)計(jì)主要采用線性布局(Linear Layout),所以就線性布局我們來(lái)做簡(jiǎn)單地介紹。</p><p>  線性布局 LinearLayout:線性布局是所用

48、布局中最常用的方式之一,RadioGroup, TabWidget,TableLayout,TableRow,ZoomControls類(lèi)的父類(lèi)。LinearLayout可以讓它的子元素垂直或水平的方式排成一行(不設(shè)置方向的時(shí)候默認(rèn)按照垂直方向排列)。LinearLayout以你為它設(shè)置的垂直或水平的屬性值,來(lái)排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一個(gè)垂直列表的每一行只會(huì)有一個(gè)元素,而不管他們有多寬,而一個(gè)水平列表將會(huì)

49、只有一個(gè)行高(高度為最高子元素的高度加上邊框高度)。LinearLayout保持子元素之間的間隔以及互相對(duì)齊(相對(duì)一個(gè)元素的右對(duì)齊、中間對(duì)齊或者左對(duì)齊)。</p><p>  LinearLayout還支持為單獨(dú)的子元素指定weight 。好處就是允許子元素可以填充屏幕上的剩余空間。這也避免了在一個(gè)大屏幕中,一串小對(duì)象擠成一堆的情況,而是允許他們放大填充空白。子元素指定一個(gè)weight 值,剩余的空間就會(huì)按這些子

50、元素指定的weight比例分配給這些子元素。默認(rèn)的weight值為0。例如,如果有三個(gè)文本框,其中兩個(gè)指定了weight值為1,那么,這兩個(gè)文本框?qū)⒌缺壤胤糯?,并填滿(mǎn)剩余的空間,而第三個(gè)文本框不會(huì)放大。</p><p>  3.3.5 控件介紹</p><p>  TextView —— 文本控件,可以用它來(lái)顯示文字,就像一個(gè)標(biāo)簽一樣,或者你可以認(rèn)為是html中的span。對(duì)于TextV

51、iew是怎么設(shè)置顯示的文本,怎樣設(shè)置字體的大小,字體的顏色,字體的樣式。TextView包含以下子類(lèi):Button, CheckedTextView,Chronometer,DigitalClock,EditText。以下簡(jiǎn)單介紹TextView的屬性:</p><p>  android:id —— 控件的標(biāo)識(shí)符</p><p>  android:layout_width —— 設(shè)置控

52、件的寬度</p><p>  android:layout_height —— 設(shè)置控件的高度</p><p>  android:layout_marginTop —— 設(shè)置文本的上外邊距</p><p>  android:textSize —— 設(shè)置文本文字的的大小</p><p>  android:paddingLeft —— 設(shè)置

53、元素左內(nèi)邊距</p><p>  Button —— 按鈕控件,在button內(nèi)部可以放置內(nèi)容,比如文本或圖像。<button>與</button>標(biāo)簽之間的所有內(nèi)容都是按鈕的內(nèi)容,其中包括任何可接受的正文內(nèi)容,比如文本或或多媒體。比如,我們可以在按鈕中包括了一個(gè)圖像和相關(guān)的文本,用它們?cè)诎粹o中創(chuàng)建一個(gè)吸引人的標(biāo)記圖像。不過(guò)button禁止使用的元素是圖像映射,因?yàn)樗鼘?duì)鼠標(biāo)和鍵盤(pán)敏感的動(dòng)作

54、會(huì)干擾表單按鈕的行為。以下簡(jiǎn)單介紹Button的屬性:</p><p>  android:id —— 控件的標(biāo)識(shí)符</p><p>  android:layout_width —— 設(shè)置按鈕的寬度</p><p>  android:layout_height —— 設(shè)置按鈕的高度</p><p>  android:textSize —

55、— 設(shè)置按鈕里文字的大小</p><p>  android:layout_marginTop —— 設(shè)置按鈕的上外邊距</p><p>  android:text —— 設(shè)置按鈕中的文字</p><p>  android:visibility —— 設(shè)置按鈕里的元素是否可見(jiàn)</p><p>  EditText —— 文本編輯框,Tex

56、tView的直接子類(lèi),所以EditText會(huì)繼成父類(lèi)TextView的一些方法。在布局中配置EditText也需同時(shí)配置一個(gè)Button,這樣可以在代碼中監(jiān)聽(tīng)Button的事件,以便獲取當(dāng)前在EditView中輸入的內(nèi)容并且顯示出來(lái)。在EditView可以限制輸入的字符串類(lèi)型。以下簡(jiǎn)單介紹EditText的屬性:</p><p>  android:id —— 控件的標(biāo)識(shí)符</p><p>

57、;  android:layout_width —— 設(shè)置輸入框的寬度</p><p>  android:layout_height —— 設(shè)置輸入框的高度</p><p>  android:layout_weight —— 設(shè)置輸入框占父控件的比例</p><p>  android:inputType —— 設(shè)置輸入框內(nèi)的字符串類(lèi)型</p>&

58、lt;p>  android:hint —— 設(shè)置在輸入框輸入內(nèi)容前默認(rèn)的文字</p><p>  ImageView —— 標(biāo)簽可以顯示任意圖像,例如圖標(biāo)。ImageView類(lèi)可以加載各種來(lái)源的圖片(如資源或圖片庫(kù)),需要計(jì)算圖像的尺寸,以便它可以在其他布局中使用,并提供例如縮放和著色等各種顯示選項(xiàng),在本文用來(lái)顯示天氣圖片。以下簡(jiǎn)為ImageView的屬性:</p><p>  a

59、ndroid:id —— 設(shè)置圖片的標(biāo)識(shí)符</p><p>  android:layout_width —— 設(shè)置圖片的寬度</p><p>  android:layout_height —— 設(shè)置圖片的高度</p><p>  android:visibility —— 設(shè)置圖片是否可見(jiàn)性</p><p>  ProgressBar —

60、— 進(jìn)度條控件,通常在應(yīng)用程序執(zhí)行諸如復(fù)制文件或打印文檔等任務(wù)時(shí)使用。如果沒(méi)有視覺(jué)提示,應(yīng)用程序的用戶(hù)可能會(huì)認(rèn)為應(yīng)用程序不響應(yīng)。通過(guò)在應(yīng)用程序中使用 ProgressBar,可以警告用戶(hù)應(yīng)用程序正在執(zhí)行冗長(zhǎng)的任務(wù)且應(yīng)用程序仍在響應(yīng)。以下簡(jiǎn)單介紹ProgressBar的屬性:</p><p>  android:max —— 設(shè)置進(jìn)度條的最大進(jìn)度值</p><p>  android:pro

61、gress —— 設(shè)置進(jìn)度條初始化的進(jìn)度值</p><p>  android:secondaryProgress—— 設(shè)置二級(jí)進(jìn)度條的值</p><p>  android:layout_gravity —— 設(shè)置進(jìn)度條位置</p><p>  android:style —— 設(shè)置進(jìn)度條的風(fēng)格是長(zhǎng)方形還是圓形</p><p>  Chec

62、kBox —— 復(fù)選框,通常用于某選項(xiàng)的打開(kāi)或關(guān)閉,可以選擇任意數(shù)目的復(fù)選框;</p><p>  RadioButton —— 單選框,為用戶(hù)提供由兩個(gè)或多個(gè)互斥選項(xiàng)組成的選項(xiàng)集。雖然單選按鈕和復(fù)選框看似功能類(lèi)似,卻存在重要差異:當(dāng)用戶(hù)選擇某單選按鈕時(shí),同一組中的其他單選按鈕不能同時(shí)選定。相反,卻可以選擇任意數(shù)目的復(fù)選框。定義單選按鈕組將告訴用戶(hù),這里有一組選項(xiàng),您可以從中選擇一個(gè)且只能選擇一個(gè)。</p&

63、gt;<p><b>  4 界面設(shè)計(jì)及實(shí)現(xiàn)</b></p><p><b>  4.1 加載界面</b></p><p>  加載界面是程序開(kāi)始運(yùn)行時(shí)加載的界面。由分析可知,界面的主要功能是為應(yīng)用程序的運(yùn)行做準(zhǔn)備,包括數(shù)據(jù)庫(kù)的初始化工作,下載默認(rèn)城市天氣信息等。在界面中主要顯示的應(yīng)用程序的基本信息,內(nèi)容有學(xué)校名、英文簡(jiǎn)稱(chēng)和版權(quán)信息

64、。設(shè)計(jì)如下:</p><p>  圖4.1:加載界面設(shè)計(jì)圖</p><p>  根據(jù)設(shè)計(jì),實(shí)現(xiàn)加載界面Load_Activity,使用的布局文件是load.xml。</p><p>  整個(gè)界面采用線性布局的方式,方向?yàn)榭v向。界面中的內(nèi)容使用三個(gè)三個(gè)文本域居中顯示,用到三個(gè)TextView。加載界面布局如下所示:</p><p>  <

65、?xml version="1.0" encoding="utf-8"?></p><p>  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"</p><p>  android:layout_width="fi

66、ll_parent"</p><p>  android:layout_height="fill_parent"</p><p>  android:orientation="vertical"></p><p>  <LinearLayout </p><p>  android

67、:layout_width="fill_parent" </p><p>  android:layout_height="wrap_content" </p><p>  android:orientation="horizontal"> </p><p>  <TextView

68、 </p><p>  android:layout_width="fill_parent" </p><p>  android:layout_height="wrap_content"</p><p>  android:textSize="12pt"</p><p>  and

69、roid:textStyle="bold"</p><p>  android:layout_marginTop="80dp"</p><p>  android:gravity="center_horizontal"</p><p>  android:text="@string/siasU&q

70、uot;/></p><p>  </LinearLayout></p><p>  <TextView </p><p>  android:layout_width="fill_parent"</p><p>  android:layout_height="wrap_content&

71、quot;</p><p>  android:textSize="20pt"</p><p>  android:textStyle="bold"</p><p>  android:layout_marginTop="60dp"</p><p>  android:gravity

72、="center_horizontal"</p><p>  android:text="@string/sias"/></p><p>  <LinearLayout </p><p>  android:orientation="vertical" </p><p>

73、  android:layout_width="fill_parent" </p><p>  android:layout_height="wrap_content" </p><p>  android:layout_marginTop="100dp"></p><p><b>  &l

74、t;TextView</b></p><p>  android:text="@string/ab"</p><p>  android:layout_width="fill_parent"</p><p>  android:layout_height="wrap_content"</p

75、><p>  android:gravity="center_horizontal"/></p><p>  </LinearLayout></p><p>  </LinearLayout></p><p>  在加載界面文件中,還需要設(shè)置引用的布局文件,然后逐個(gè)聲明布局文件中對(duì)應(yīng)的控件,并將這

76、些控件與布局文件中的對(duì)應(yīng)的控件綁定在一起。綁定過(guò)程為:引用R.java中控件元素對(duì)應(yīng)的整型值,通過(guò)強(qiáng)制轉(zhuǎn)換,將其轉(zhuǎn)換為對(duì)應(yīng)類(lèi)型的控件,最后與之綁定。這樣做是為了方便應(yīng)用程序?qū)缑嬷械目丶M(jìn)行操作。設(shè)置過(guò)程如下:</p><p>  setContentView(R.layout.load);</p><p>  界面顯示后,開(kāi)始進(jìn)行應(yīng)用程序運(yùn)行前的準(zhǔn)備,主要有數(shù)據(jù)庫(kù)的初始化和默認(rèn)城市的天氣

77、數(shù)據(jù)下載工作。在數(shù)據(jù)庫(kù)的初始化部分,首先檢查數(shù)據(jù)庫(kù)文件是否存在,若不存在則復(fù)制數(shù)據(jù)庫(kù)文件到指定目錄,若存在,則不進(jìn)行此項(xiàng)操作。數(shù)據(jù)庫(kù)初始化代碼如下:</p><p>  // 初始化,轉(zhuǎn)移數(shù)據(jù)庫(kù)文件</p><p><b>  try {</b></p><p>  db_tools.init();</p><p>  

78、System.out.println("復(fù)制數(shù)據(jù)庫(kù)");</p><p>  } catch (Exception e) {</p><p>  // TODO Auto-generated catch block</p><p>  System.out.println("復(fù)制數(shù)據(jù)庫(kù)時(shí)候異常");</p>&l

79、t;p>  e.printStackTrace();</p><p><b>  }</b></p><p>  初始化數(shù)據(jù)庫(kù)文件后,進(jìn)行默認(rèn)城市天氣數(shù)據(jù)的下載工作。首先打開(kāi)數(shù)據(jù)庫(kù),查找默認(rèn)城市的程式碼,然后依據(jù)城市碼生成鏈接,啟動(dòng)下載數(shù)據(jù)服務(wù)。下載過(guò)程完成后,設(shè)置下載狀態(tài)碼,返回。過(guò)程如下:</p><p>  TimerTask t

80、ask = new TimerTask(){</p><p>  public void run() {</p><p>  // TODO Auto-generated method stub</p><p>  intent = new Intent(Load_Activity.this, Weather_Service.class);</p>&

81、lt;p>  intent.putExtra("code", db_tools.getDefaultCode());</p><p>  Load_Activity.this.startService(intent);</p><p>  while(true){</p><p>  if(Data_Key.getDownload_key(

82、) != 0){</p><p>  handler.sendEmptyMessage(0);</p><p><b>  break;</b></p><p><b>  }</b></p><p><b>  }</b></p><p><b&

83、gt;  }</b></p><p><b>  };</b></p><p>  加載界面通過(guò)不斷檢查狀態(tài)碼,知道下載過(guò)程結(jié)束,然后依據(jù)狀態(tài)碼,判斷下載是否成功,在進(jìn)行操作。下載成功,則跳轉(zhuǎn)到默認(rèn)城市的實(shí)時(shí)天氣界面,下載不成功,則通知用戶(hù)聯(lián)網(wǎng)失敗等信息。代碼如下:</p><p>  public void handleMessa

84、ge(Message msg) {</p><p>  // TODO Auto-generated method stub</p><p>  if(Data_Key.getDownload_key() == Data_Key.LINK_ERROR){</p><p>  Toast.makeText(Load_Activity.this, "連接超時(shí)!

85、請(qǐng)檢查網(wǎng)絡(luò)連接!", Toast.LENGTH_LONG).show();</p><p><b>  }</b></p><p>  if(Data_Key.getDownload_key() == Data_Key.LINK_SUCCESS){</p><p>  timer.cancel();</p><p&

86、gt;  Intent weatherIntent = new Intent();</p><p>  weatherIntent.setClass(Load_Activity.this, Weather_Activity.class);</p><p>  Load_Activity.this.startActivity(weatherIntent);</p><p&

87、gt;  Load_Activity.this.stopService(intent);</p><p>  Load_Activity.this.overridePendingTransition(anim.slide_in_left, anim.slide_out_right); // 界面切換</p><p>  Load_Activity.this.finish();</p&

88、gt;<p><b>  }</b></p><p><b>  }</b></p><p>  下載數(shù)據(jù)成功后,表示天氣對(duì)象已經(jīng)可以使用,下載服務(wù)將關(guān)閉,然后切換到實(shí)時(shí)天氣界面。</p><p>  4.2 實(shí)時(shí)天氣界面</p><p>  實(shí)時(shí)天氣界面顯示的是一個(gè)城市的實(shí)時(shí)天氣情況

89、,是應(yīng)用程序的主界面。通過(guò)分析,界面中的內(nèi)容應(yīng)包括城市名、天氣描述、溫度、風(fēng)速、天氣圖片、日期、星期、發(fā)布時(shí)間、是否默認(rèn)城市、溫馨提示等詳細(xì)的天氣信息,對(duì)實(shí)時(shí)天氣界面設(shè)計(jì)如下:</p><p>  圖4.2:實(shí)時(shí)天氣界面設(shè)計(jì)圖</p><p>  根據(jù)設(shè)計(jì),實(shí)現(xiàn)實(shí)時(shí)天氣界面Weather_Activity,使用的布局文件是main.xml。</p><p>  整個(gè)

90、界面的布局同樣采用線性布局的方式。這里首先將整個(gè)界面分為上下兩個(gè)部分,然后上半部分又分為左右兩個(gè)部分,在左邊顯示城市名、天氣描述、溫度、風(fēng)速,在右邊顯示天氣圖片、日期、星期、發(fā)布時(shí)間、是否為默認(rèn)城市;在下半部分顯示溫馨提示和跳轉(zhuǎn)到未來(lái)天氣的按鈕;上下部分之間用一個(gè)圖層隔開(kāi),顯示效果為一條水平線。界面中共使用到8個(gè)TextView:城市名、天氣描述、溫度、風(fēng)速、日期、星期、發(fā)布時(shí)間、提示默認(rèn),1個(gè)ImageView:天氣圖片,1個(gè)Butt

91、on:設(shè)置默認(rèn)。以實(shí)時(shí)天氣界面布局中上半部分為例來(lái)介紹:</p><p>  <!-- 上半部分 --></p><p>  <LinearLayout </p><p>  android:orientation="horizontal" </p><p>  android:layout_width=

92、"fill_parent" </p><p>  android:layout_height="wrap_content"></p><p>  <!-- 第一列:文字信息 --></p><p>  <LinearLayout android:orientation="vertical&qu

93、ot; </p><p>  android:layout_width="160dp" </p><p>  android:layout_height="fill_parent" </p><p>  android:paddingLeft="5dp"></p><p>&l

94、t;b>  <TextView</b></p><p>  android:id="@+id/city"</p><p>  android:layout_width="wrap_content"</p><p>  android:layout_height="60dp"</

95、p><p>  android:textSize="18pt"</p><p>  android:textStyle="bold"/> </p><p>  <TextView </p><p>  android:id="@+id/weather"</p

96、><p>  android:layout_width="140dp"</p><p>  android:layout_height="40dp"</p><p>  android:textSize="10pt"</p><p>  android:paddingLeft="

97、;2dp"</p><p>  android:layout_marginTop="20dp"/></p><p>  <TextView </p><p>  android:id="@+id/temp"</p><p>  android:layout_width="

98、140dp"</p><p>  android:layout_height="40dp"</p><p>  android:textSize="10pt"</p><p>  android:paddingLeft="4dp"/></p><p>  <Te

99、xtView </p><p>  android:id="@+id/wind"</p><p>  android:layout_width="140dp"</p><p>  android:layout_height="40dp"</p><p>  android:textS

100、ize="10pt"</p><p>  android:paddingLeft="2dp"/> </p><p>  </LinearLayout><!-- 第一列:文字信息 結(jié)束 --></p><p>  <!-- 第二列:圖片信息 --></p>

101、<p>  <LinearLayout </p><p>  android:orientation="vertical" </p><p>  android:layout_margin="5dp" </p><p>  android:layout_width="fill_parent"

102、; </p><p>  android:layout_height="fill_parent"> </p><p>  <ImageView</p><p>  android:id="@+id/img"</p><p>  android:layout_width=&q

103、uot;110dp"</p><p>  android:layout_height="110dp" </p><p>  android:contentDescription="@string/con"</p><p>  android:gravity="center_h

104、orizontal"</p><p>  android:visibility="visible"/></p><p><b>  <TextView</b></p><p>  android:id="@+id/date"</p><p>  android

105、:layout_width="fill_parent"</p><p>  android:layout_height="wrap_content"</p><p>  android:layout_marginTop="10dp"</p><p>  android:textSize="6pt&

106、quot;</p><p>  android:paddingLeft="6dp"/></p><p>  <!-- 發(fā)布時(shí)間 --></p><p>  <LinearLayout </p><p>  android:orientation="horizontal" <

107、/p><p>  android:layout_width="fill_parent" </p><p>  android:layout_height="wrap_content" </p><p>  android:paddingLeft="5dp"></p><p>  &

108、lt;TextView </p><p>  android:id="@+id/week"</p><p>  android:layout_width="wrap_content"</p><p>  android:layout_height="wrap_content"</p><

109、p>  android:textSize="6pt"/></p><p>  <TextView </p><p>  android:id="@+id/inch"</p><p>  android:layout_width="wrap_content"</p><p

110、>  android:layout_height="wrap_content"</p><p>  android:textSize="6pt"/> </p><p>  </LinearLayout><!-- 發(fā)布時(shí)間 結(jié)束 --></p><p>

111、  <!-- 不是默認(rèn) --></p><p>  <Button </p><p>  android:id="@+id/notDefault"</p><p>  android:layout_width="90dp"</p><p>  android:layo

112、ut_height="35dp"</p><p>  android:textSize="6pt"</p><p>  android:layout_marginTop="5dp"</p><p>  android:text="@string/notDefault"</p>

113、<p>  android:visibility="gone"/></p><p>  <!-- 是默認(rèn) --></p><p>  <TextView </p><p>  android:id="@+id/isDefault"</p><p>  android

114、:layout_width="wrap_content"</p><p>  android:layout_height="wrap_content"</p><p>  android:text="@string/isDefault"</p><p>  android:textSize="6p

115、t"</p><p>  android:textStyle="italic"</p><p>  android:layout_marginTop="9dp"</p><p>  android:visibility="gone"</p><p>  android:te

116、xtColor="@android:color/darker_gray"/></p><p>  </LinearLayout><!-- 第二列:圖片信息 結(jié)束 --></p><p>  </LinearLayout><!-- 上半部分 結(jié)束 --></p><p>  在界面文

117、件中,同樣的方式設(shè)置引用的布局文件,以及設(shè)置綁定界面中的控件。界面加載到程序后,首先對(duì)界面中的控件元素進(jìn)行賦值,將程序加載時(shí)候獲得的天氣數(shù)據(jù)逐個(gè)設(shè)置為控件顯示的內(nèi)容,設(shè)置完畢后,顯示整個(gè)界面,這樣,城市的詳細(xì)天氣數(shù)據(jù)就呈現(xiàn)出來(lái)了。布局過(guò)程如下:</p><p>  TextView city = null;</p><p>  TextView weather = null;</p&

118、gt;<p>  TextView temp = null;</p><p>  TextView wind = null;</p><p>  TextView date = null;</p><p>  TextView week = null;</p><p>  TextView inch = null;</p&

119、gt;<p>  TextView advice = null;</p><p>  ImageView img = null;</p><p>  Button feature = null;</p><p>  TextView isDefault = null;</p><p>  Button notDefault =

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論