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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p>  本科畢業(yè)論文(設計)</p><p>  題 目 基于Android平臺的天氣軟件開發(fā) </p><p>  ——界面設計及異常處理 </p><p>  指導老師 職 稱 </p><p>  基于Android平臺的天氣軟件開發(fā)</p><p>

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

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

4、;/p><p>  關鍵字 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 研究內容1</p><p>  1.2 研究目的和意義1</p><p>  1.3 研究前景1</p><p>  2 Android開發(fā)環(huán)境及平臺搭建3</p><p>  2.1 A

12、ndroid開發(fā)環(huán)境介紹3</p><p>  2.2 Android開發(fā)平臺搭建3</p><p><b>  3 項目分析5</b></p><p>  3.1 用戶界面5</p><p>  3.2 異常分析5</p><p>  3.3 相關技術介紹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 界面設計及實現(xiàn)11</p>

14、<p>  4.1 加載界面11</p><p>  4.2 實時天氣界面14</p><p>  4.3 未來天氣界面21</p><p>  4.4 選擇城市界面27</p><p>  4.5 版權及Logo設計30</p><p><b>  5 異常處理31</b&g

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

16、;/p><p><b>  參考文獻40</b></p><p><b>  1 緒論</b></p><p><b>  1.1 研究內容</b></p><p>  本文介紹了基于Android平臺下天氣軟件的界面及異常處理部分內容,詳細介紹了加載界面、實時天氣界面、未來天氣

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

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

19、基于Android平臺的天氣軟件已經有很多,經過分析,用戶第一眼往往是一個軟件的外觀,一個好看的界面才能讓用戶以一種愛美之心去嘗試,才能進一步了解一個軟件的好壞,所以吸引眼球的界面是爭取用戶的第一步。因此,界面設計工作對應用程序來說非常重要,在界面上吸引了用戶,才能進一步讓用戶體驗應用程序中的功能,使用這個軟件。</p><p><b>  1.3 研究前景</b></p>&

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

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

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

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

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

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

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

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

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

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

30、上的Available Software,點擊右側的Add,然后在Name框中填寫Android,在Location框中選擇上步下載的ADT文件,然后點擊OK>Finish>Install All,這時關閉Eclipse再重新啟動。重啟后選擇Eclipse菜單中的Window>Preferences,在左側的Android項目中SDK Location中填入Android SDK解壓后的目錄,然后點擊Apply。<

31、;/p><p>  這樣,整個平臺的搭建工作就完成了。</p><p><b>  3 項目分析</b></p><p><b>  3.1 用戶界面 </b></p><p>  根據(jù)應用程序的功能需要,對用戶界面做如下分析:</p><p>  加載界面:程序開始運行時顯示加

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

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

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

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

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

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

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

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

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

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

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

43、程序比如Activity所屬線程,而是單開線程后臺執(zhí)行,這樣用戶體驗比較好。后者可被其他應用程序復用,例如天氣預報服務,其他應用程序不需要再寫這樣的服務,調用已有的即可。</p><p>  Service的生命周期,Service有startService和bindService兩種啟動Service方法,每種方法Service的生命周期是不一樣的。</p><p>  通過startS

44、ervice() —— Service會經歷 onCreate --> onStartCommand(),stopService的時候直接onDestroy,如果是調用者直接退出而沒有調用stopService的話,Service會一直在后臺運行,下次調用者再起來仍然可以stopService;</p><p>  通過bindService() —— Service只會運行onCreate()-->

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

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

47、Linear Layout)、相對布局(Relative Layout)、表格布局(Table Layout)、網格視圖(Grid View)、標簽布局(Tab Layout)、列表視圖(List View)和絕對布局(Absolute Layout)。本文設計主要采用線性布局(Linear Layout),所以就線性布局我們來做簡單地介紹。</p><p>  線性布局 LinearLayout:線性布局是所用

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

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

50、元素指定的weight比例分配給這些子元素。默認的weight值為0。例如,如果有三個文本框,其中兩個指定了weight值為1,那么,這兩個文本框將等比例地放大,并填滿剩余的空間,而第三個文本框不會放大。</p><p>  3.3.5 控件介紹</p><p>  TextView —— 文本控件,可以用它來顯示文字,就像一個標簽一樣,或者你可以認為是html中的span。對于TextV

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

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

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

54、會干擾表單按鈕的行為。以下簡單介紹Button的屬性:</p><p>  android:id —— 控件的標識符</p><p>  android:layout_width —— 設置按鈕的寬度</p><p>  android:layout_height —— 設置按鈕的高度</p><p>  android:textSize —

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

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

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

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

59、ndroid:id —— 設置圖片的標識符</p><p>  android:layout_width —— 設置圖片的寬度</p><p>  android:layout_height —— 設置圖片的高度</p><p>  android:visibility —— 設置圖片是否可見性</p><p>  ProgressBar —

60、— 進度條控件,通常在應用程序執(zhí)行諸如復制文件或打印文檔等任務時使用。如果沒有視覺提示,應用程序的用戶可能會認為應用程序不響應。通過在應用程序中使用 ProgressBar,可以警告用戶應用程序正在執(zhí)行冗長的任務且應用程序仍在響應。以下簡單介紹ProgressBar的屬性:</p><p>  android:max —— 設置進度條的最大進度值</p><p>  android:pro

61、gress —— 設置進度條初始化的進度值</p><p>  android:secondaryProgress—— 設置二級進度條的值</p><p>  android:layout_gravity —— 設置進度條位置</p><p>  android:style —— 設置進度條的風格是長方形還是圓形</p><p>  Chec

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

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

64、。設計如下:</p><p>  圖4.1:加載界面設計圖</p><p>  根據(jù)設計,實現(xiàn)加載界面Load_Activity,使用的布局文件是load.xml。</p><p>  整個界面采用線性布局的方式,方向為縱向。界面中的內容使用三個三個文本域居中顯示,用到三個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>  在加載界面文件中,還需要設置引用的布局文件,然后逐個聲明布局文件中對應的控件,并將這

76、些控件與布局文件中的對應的控件綁定在一起。綁定過程為:引用R.java中控件元素對應的整型值,通過強制轉換,將其轉換為對應類型的控件,最后與之綁定。這樣做是為了方便應用程序對界面中的控件進行操作。設置過程如下:</p><p>  setContentView(R.layout.load);</p><p>  界面顯示后,開始進行應用程序運行前的準備,主要有數(shù)據(jù)庫的初始化和默認城市的天氣

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

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

79、t;p>  e.printStackTrace();</p><p><b>  }</b></p><p>  初始化數(shù)據(jù)庫文件后,進行默認城市天氣數(shù)據(jù)的下載工作。首先打開數(shù)據(jù)庫,查找默認城市的程式碼,然后依據(jù)城市碼生成鏈接,啟動下載數(shù)據(jù)服務。下載過程完成后,設置下載狀態(tài)碼,返回。過程如下:</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>  加載界面通過不斷檢查狀態(tài)碼,知道下載過程結束,然后依據(jù)狀態(tài)碼,判斷下載是否成功,在進行操作。下載成功,則跳轉到默認城市的實時天氣界面,下載不成功,則通知用戶聯(lián)網失敗等信息。代碼如下:</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, "連接超時!

85、請檢查網絡連接!", 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ù)成功后,表示天氣對象已經可以使用,下載服務將關閉,然后切換到實時天氣界面。</p><p>  4.2 實時天氣界面</p><p>  實時天氣界面顯示的是一個城市的實時天氣情況

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

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

91、on:設置默認。以實時天氣界面布局中上半部分為例來介紹:</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><!-- 第一列:文字信息 結束 --></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ā)布時間 --></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ā)布時間 結束 --></p><p>

111、  <!-- 不是默認 --></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>  <!-- 是默認 --></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><!-- 第二列:圖片信息 結束 --></p><p>  </LinearLayout><!-- 上半部分 結束 --></p><p>  在界面文

117、件中,同樣的方式設置引用的布局文件,以及設置綁定界面中的控件。界面加載到程序后,首先對界面中的控件元素進行賦值,將程序加載時候獲得的天氣數(shù)據(jù)逐個設置為控件顯示的內容,設置完畢后,顯示整個界面,這樣,城市的詳細天氣數(shù)據(jù)就呈現(xiàn)出來了。布局過程如下:</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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論