版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)論文(設(shè)計)</p><p> 題 目 基于Android平臺的天氣軟件開發(fā) </p><p> ——界面設(shè)計及異常處理 </p><p> 指導(dǎo)老師 職 稱 </p><p> 基于Android平臺的天氣軟件開發(fā)</p><p>
2、 ——界面設(shè)計及異常處理</p><p><b> 摘 要</b></p><p> 隨著科技的發(fā)展,移動智能終端逐漸走進(jìn)人們的視線,相關(guān)應(yīng)用越來越廣泛,并在人們的日常生活中扮演著越來越重要的角色。因此,關(guān)鍵應(yīng)用程序的開發(fā)成為影響移動智能終端普及的重要因素,設(shè)計并開發(fā)實用、方便的應(yīng)用程序具有重要的意義和良好的市場前景。Android作為當(dāng)前最流行的操作平臺,自
3、然也存在著大量的應(yīng)用服務(wù)需求。</p><p> 本課題研究的是基于Android平臺下的天氣軟件,目的是幫助用戶隨時隨地查詢天氣信息及天氣變化情況,讓生活更加舒適方便。本文詳細(xì)講述了Android平臺下天氣軟件的界面設(shè)計及異常處理部分,主要包括界面的實現(xiàn)、控件的使用、界面的布局和異常的處理等內(nèi)容,結(jié)合中國氣象網(wǎng)的天氣數(shù)據(jù),將準(zhǔn)確的天氣情況以友好的方式呈現(xià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 研究內(nèi)容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 相關(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è)計及實現(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 版權(quán)及Logo設(shè)計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 界面測試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 研究內(nèi)容</b></p><p> 本文介紹了基于Android平臺下天氣軟件的界面及異常處理部分內(nèi)容,詳細(xì)介紹了加載界面、實時天氣界面、未來天氣
17、界面和搜索界面進(jìn)行界面設(shè)計及實現(xiàn),出現(xiàn)異常情況的處理等內(nèi)容,目的是使用戶能夠更加賞心悅目地體驗此軟件帶來的服務(wù)。通過對界面的布局及控件的應(yīng)用等相關(guān)內(nèi)容的學(xué)習(xí),使我們對Android平臺下界面開發(fā)工作有一個初步的了解,并且經(jīng)過這次開發(fā)過程,能夠基本掌握這些內(nèi)容。軟件開發(fā)后能夠幫助用戶隨時隨地搜索由中國氣象局提供的全國2564個縣級以上城市的天氣信息,并且把數(shù)據(jù)顯示在一個界面美觀、布局合理窗口內(nèi),使用戶能夠舒適的享受軟件帶來的服務(wù)。<
18、/p><p> 1.2 研究目的和意義</p><p> 天氣軟件是一種非常實用的信息服務(wù),隨著智能手機的不斷普及,各種智能手機平臺下都有各種各樣的天氣軟件。Android作為現(xiàn)在主流的智能手機之一,自然也需要這方面的軟件。天氣關(guān)系到人們的日常生活,如告知溫暖,方便出行等。此外,對未來天氣的預(yù)測還可以幫助人們進(jìn)行農(nóng)作物的澆灌、施肥、收割等工作。</p><p>
19、基于Android平臺的天氣軟件已經(jīng)有很多,經(jīng)過分析,用戶第一眼往往是一個軟件的外觀,一個好看的界面才能讓用戶以一種愛美之心去嘗試,才能進(jìn)一步了解一個軟件的好壞,所以吸引眼球的界面是爭取用戶的第一步。因此,界面設(shè)計工作對應(yīng)用程序來說非常重要,在界面上吸引了用戶,才能進(jìn)一步讓用戶體驗應(yīng)用程序中的功能,使用這個軟件。</p><p><b> 1.3 研究前景</b></p>&
20、lt;p> Android在中國的前景十分廣闊,首先是有成熟的消費者,在國內(nèi),Android社區(qū)十分紅火,這些社區(qū)為Android在中國的普及做了很好的推廣作用。國內(nèi)廠商和運營商也紛紛加入了Android陣營,包括中國移動,中國聯(lián)通,中興通訊,華為通訊,聯(lián)想等大企業(yè),同時不僅僅局限于手機,國內(nèi)廠家也陸續(xù)推出了采用Android系統(tǒng)的產(chǎn)品,我們可以預(yù)見Android將會被廣泛應(yīng)用在國產(chǎn)智能上網(wǎng)設(shè)備上,將進(jìn)一步擴大Android系統(tǒng)
21、的應(yīng)用范圍。另一方面,由于國內(nèi)政策的限制,導(dǎo)致Android的部分功能(如Android market)在國內(nèi)無法正常使用,目前常用的解決方法是使用VPN服務(wù)來訪問。</p><p> Android的主要競爭對手是蘋果公司的IOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市場份額首次超過塞班系統(tǒng),躍居全球第一。2012年2月數(shù)據(jù),Android占據(jù)全球智能手機操作系統(tǒng)市
22、場52.5%的份額,中國市場占有率為68.4%,在美國手機市場的占有率達(dá)到了47.3%。到二月下旬Google公司正式宣布,Android設(shè)備每天激活量達(dá)到85萬臺,通過Google服務(wù)器激活的Android設(shè)備用戶總數(shù)突破3億臺,距離2012年1月的數(shù)量,在短短1個月時間內(nèi)全球共賣出5000萬臺安卓設(shè)備,平均每秒鐘就賣出15臺安卓設(shè)備。 Google官方數(shù)據(jù)顯示,Android電子市場(Android Market)上的應(yīng)用程
23、序數(shù)量已經(jīng)突破45萬個,一年內(nèi)增加30萬個。相信在不久的將來會有更多的用戶選擇Android系統(tǒng)的手機。Android是以Linux為核心的手機操作平臺,作為一款開放式的操作系統(tǒng),隨著Android的快速發(fā)展,如今已允許開發(fā)者使用多種編程語言來開發(fā)Android應(yīng)用程序,而不再是以前只能使用Java開發(fā)Android應(yīng)用程序的單一</p><p> 2 Android開發(fā)環(huán)境及平臺搭建</p>&
24、lt;p> 2.1 Android開發(fā)環(huán)境介紹</p><p> Android平臺使用Java編程語言來開發(fā)應(yīng)用程序,而Android提供了對Java的核心支持??紤]到Java虛擬機的執(zhí)行效率和占用資源情況,Google重新設(shè)計了Java的編譯器,命名為Dalvik。Dalvik是經(jīng)過優(yōu)化的Java編譯器,允許在有限的內(nèi)存中同時運行多個虛擬機的實例,并且每一個Dalvik應(yīng)用作為一個獨立的Linux進(jìn)
25、程執(zhí)行,獨立的進(jìn)程可以防止在虛擬機崩潰的時候所有程序都被關(guān)閉。</p><p> 項目的開發(fā)在Eclipse環(huán)境中進(jìn)行,由于進(jìn)行的是Android應(yīng)用程序的開發(fā),需要在Eclipse安裝ADT插件,即Android開發(fā)工具,這樣Eclipse就可以和Android SDK建立連接,在Eclipse中啟動Android模擬器、調(diào)試程序等工作。</p><p> 由以上分析可知,Andro
26、id平臺的搭建需要Android SDK、Java SDK、Eclipse和ADT四個軟件。</p><p> 2.2 Android開發(fā)平臺搭建</p><p> 在進(jìn)行Android應(yīng)用程序的開發(fā)前,要先搭建Android平臺,然后才能在開發(fā)環(huán)境中進(jìn)行編程。根據(jù)官方指導(dǎo),對Android平臺的搭建過程介紹如下:</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、指定文件夾,啟動SDK Manager進(jìn)行安裝,選擇需要的Android版本,然后更新,這次更新需要的時間比較慢,所以更新前要做好準(zhǔn)備。安裝完成后,將ADB命令所在的目錄platform-tools的完整路徑添加到系統(tǒng)的環(huán)境變量PATH中,就能夠在命令中使用ADB命令了;</p><p> 接下來要安裝的是ADT插件,即Android開發(fā)工具。因為ADT在線安裝容易遇到問題,增加一些不必要的麻煩所以需要下載后在
29、本地安裝。指定網(wǎng)址為http://development.android.com/sdk/index.html,下載存放在指定的位置以便后面使用;</p><p> 最后,下載Eclipse,建議選擇Eclipse3.4以上版本,網(wǎng)址為http://www.eclipse.org/downloads/,解壓到指定位置后運行。選擇Eclipse菜單中的Help>Install New Software選項卡
30、上的Available Software,點擊右側(cè)的Add,然后在Name框中填寫Android,在Location框中選擇上步下載的ADT文件,然后點擊OK>Finish>Install All,這時關(guān)閉Eclipse再重新啟動。重啟后選擇Eclipse菜單中的Window>Preferences,在左側(cè)的Android項目中SDK Location中填入Android SDK解壓后的目錄,然后點擊Apply。<
31、;/p><p> 這樣,整個平臺的搭建工作就完成了。</p><p><b> 3 項目分析</b></p><p><b> 3.1 用戶界面 </b></p><p> 根據(jù)應(yīng)用程序的功能需要,對用戶界面做如下分析:</p><p> 加載界面:程序開始運行時顯示加
32、載界面,此界面是應(yīng)用程序最先展示的窗口,所以,要盡量保持界面信息簡潔,突出重點。這里設(shè)置為顯示學(xué)校的名稱、英文縮寫及版權(quán)信息。此界面的作用是,不僅將軟件的基本信息顯示給用戶,而且在加載的過程中進(jìn)行數(shù)據(jù)的初始化工作,將應(yīng)用程序運行時需要的天氣信息提前做準(zhǔn)備;</p><p> 實時天氣界面:顯示城市當(dāng)前的實時天氣狀況,包括城市名稱、天氣描述、溫度高低、風(fēng)速、天氣描述圖片、獲取數(shù)據(jù)時間、日期、星期、溫馨提示和是否默
33、認(rèn)城市等信息。此界面是應(yīng)用程序的主界面,所以在設(shè)計的時候應(yīng)盡量使界面美觀,將天氣數(shù)據(jù)以用戶所容易接受的方式呈現(xiàn)出來;</p><p> 未來天氣界面:對未來6天的天氣情況簡要描述,簡要顯示星期、天氣描述、溫度高低等數(shù)據(jù),使用戶一目了然,使人們及時了解天氣變化,對日常生活出行、穿衣做好準(zhǔn)備;</p><p> 選擇城市界面:用戶可以根據(jù)需要選擇全國2564個縣級以上城市并查看該城市的天氣
34、情況。在選擇后,用戶可以把該城市設(shè)置為默認(rèn),再次打開應(yīng)用程序就可以直接看到該城市的天氣狀況。</p><p> 經(jīng)過以上分析可知,應(yīng)用程序共需要四個界面,即加載界面、實時天氣界面、未來天氣界面、選擇城市界面,來實現(xiàn)應(yīng)用程序中的基本功能。</p><p><b> 3.2 異常分析</b></p><p> 當(dāng)應(yīng)用程序中的界面沒有正常顯示天
35、氣數(shù)據(jù),出現(xiàn)假死或者跑出程序錯誤時,視為程序異常。</p><p> 經(jīng)過分析,應(yīng)用程序在連接網(wǎng)絡(luò)和解析數(shù)據(jù)時,容易出現(xiàn)異常,所以在設(shè)計的時候應(yīng)仔細(xì)分析原因,并且認(rèn)真對待,在出現(xiàn)異常的地方給出具體解決方案,使用戶享受到更友好的體驗。</p><p> 3.3 相關(guān)技術(shù)介紹</p><p> 3.3.1 Activity</p><p>
36、 在Android應(yīng)用程序中,一個活動Activity通常就是一個單獨的界面。每一個界面都被實現(xiàn)為一個獨立的類,并且從Activity基類中繼承而來,Activity將會顯示由空間組成的用戶接口,并對事件做出響應(yīng)。大多數(shù)的應(yīng)用都是由多個Activity顯示組成,例如,第一個界面用來顯示加載界面,第二界面用來顯示實時天氣界面,第三個界面用來顯示未來一周的天氣界面。</p><p> 這里的每一個界面就是一個Ac
37、tivity,很容易是從一個界面到一個新的界面,并且完成新的Activity。當(dāng)一個新的界面打開后,前一個界面將會暫停,并保留在歷史棧中。用戶可以返回到歷史棧中的前一個界面,當(dāng)界面不再使用時,從歷史棧中刪除。</p><p> 簡單理解,Activity代表一個用戶所能看到的界面,主要用于處理應(yīng)用程序的整體性工作,例如,監(jiān)聽系統(tǒng)事件(按鍵事件、觸摸屏事件等),為用戶顯示指定的View,啟動其他Activity等
38、。所有應(yīng)用的Activity都繼承于android.app.Activity類,該類是Android提供的基層類,其他的Activity繼承該父類后,通過父類的方法實現(xiàn)各種功能,這種設(shè)計在其他領(lǐng)域也較為常見。</p><p> 3.3.2 Intent</p><p> Android基本的設(shè)計理念是鼓勵減少組件間的耦合,因此Android提供了Intent(意圖),Intent提供了
39、一種通用的消息系統(tǒng),它允許在你的應(yīng)用程序與其他的應(yīng)用程序間傳遞Intent來執(zhí)行動作和產(chǎn)生時間。使用Intent可以激活A(yù)ndroid應(yīng)用的三個核心組件:活動、服務(wù)和廣播接收器。</p><p> Intent可以劃分為顯示意圖和隱式意圖。顯示意圖調(diào)用Intent。SetClass方法明確制定了組件名的Intent為顯示意圖,顯示意圖明確制定了Intent應(yīng)該傳遞給那個組件,在同一個應(yīng)用內(nèi)部使用的。隱式意圖沒有
40、明確指定組件名的Intent為隱式意圖。Android系統(tǒng)會根據(jù)隱式意圖中設(shè)置的動作(action)、類別(category)、數(shù)據(jù)(URI和數(shù)據(jù)類型)找到最合適的組件來處理這個意圖。</p><p> Intent負(fù)責(zé)對應(yīng)用中一次操作的動作、動作涉及數(shù)據(jù)和附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此Intent的描述,負(fù)責(zé)找到對應(yīng)的組件,將 Intent傳遞給調(diào)用的組件,并完成組件的調(diào)用。因此,Intent在這里
41、起著一個媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實現(xiàn)調(diào)用者與被調(diào)用者之間的結(jié)構(gòu)。</p><p> 3.3.3 Service</p><p> 如果把Activity比喻為前臺程序,那么Service就是后臺程序,Service的整個生命周期都只會在后臺執(zhí)行。Service跟 Activity一樣也由Intent調(diào)用。由于Service在后臺運行,所以沒有界面,用來處理耗時比
42、較長,而且Service不是一個單獨的進(jìn)程,也不是一個單獨的線程。Service有兩種類型:</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> 前者用于實現(xiàn)應(yīng)用程序自己的一些耗時任務(wù),比如查詢升級信息,并不占用應(yīng)用
43、程序比如Activity所屬線程,而是單開線程后臺執(zhí)行,這樣用戶體驗比較好。后者可被其他應(yīng)用程序復(fù)用,例如天氣預(yù)報服務(wù),其他應(yīng)用程序不需要再寫這樣的服務(wù),調(diào)用已有的即可。</p><p> Service的生命周期,Service有startService和bindService兩種啟動Service方法,每種方法Service的生命周期是不一樣的。</p><p> 通過startS
44、ervice() —— Service會經(jīng)歷 onCreate --> onStartCommand(),stopService的時候直接onDestroy,如果是調(diào)用者直接退出而沒有調(diào)用stopService的話,Service會一直在后臺運行,下次調(diào)用者再起來仍然可以stopService;</p><p> 通過bindService() —— Service只會運行onCreate()-->
45、onBind() 這個時候調(diào)用者和Service綁定在一起 unbindService的時候onUnbind() --> onDestroyed(),調(diào)用者退出了,Srevice就會調(diào)用onUnbind() --> onDestroyed()。在這里需要注意的是Service的onCreate的方法只會被調(diào)用一次,就是你無論多少次的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)、網(wǎng)格視圖(Grid View)、標(biāo)簽布局(Tab Layout)、列表視圖(List View)和絕對布局(Absolute Layout)。本文設(shè)計主要采用線性布局(Linear Layout),所以就線性布局我們來做簡單地介紹。</p><p> 線性布局 LinearLayout:線性布局是所用
48、布局中最常用的方式之一,RadioGroup, TabWidget,TableLayout,TableRow,ZoomControls類的父類。LinearLayout可以讓它的子元素垂直或水平的方式排成一行(不設(shè)置方向的時候默認(rèn)按照垂直方向排列)。LinearLayout以你為它設(shè)置的垂直或水平的屬性值,來排列所有的子元素。所有的子元素都被堆放在其它元素之后,因此一個垂直列表的每一行只會有一個元素,而不管他們有多寬,而一個水平列表將會
49、只有一個行高(高度為最高子元素的高度加上邊框高度)。LinearLayout保持子元素之間的間隔以及互相對齊(相對一個元素的右對齊、中間對齊或者左對齊)。</p><p> LinearLayout還支持為單獨的子元素指定weight 。好處就是允許子元素可以填充屏幕上的剩余空間。這也避免了在一個大屏幕中,一串小對象擠成一堆的情況,而是允許他們放大填充空白。子元素指定一個weight 值,剩余的空間就會按這些子
50、元素指定的weight比例分配給這些子元素。默認(rèn)的weight值為0。例如,如果有三個文本框,其中兩個指定了weight值為1,那么,這兩個文本框?qū)⒌缺壤胤糯?,并填滿剩余的空間,而第三個文本框不會放大。</p><p> 3.3.5 控件介紹</p><p> TextView —— 文本控件,可以用它來顯示文字,就像一個標(biāo)簽一樣,或者你可以認(rèn)為是html中的span。對于TextV
51、iew是怎么設(shè)置顯示的文本,怎樣設(shè)置字體的大小,字體的顏色,字體的樣式。TextView包含以下子類:Button, CheckedTextView,Chronometer,DigitalClock,EditText。以下簡單介紹TextView的屬性:</p><p> android:id —— 控件的標(biāo)識符</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)容,比如文本或或多媒體。比如,我們可以在按鈕中包括了一個圖像和相關(guān)的文本,用它們在按鈕中創(chuàng)建一個吸引人的標(biāo)記圖像。不過button禁止使用的元素是圖像映射,因為它對鼠標(biāo)和鍵盤敏感的動作
54、會干擾表單按鈕的行為。以下簡單介紹Button的屬性:</p><p> android:id —— 控件的標(biāo)識符</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è)置按鈕里的元素是否可見</p><p> EditText —— 文本編輯框,Tex
56、tView的直接子類,所以EditText會繼成父類TextView的一些方法。在布局中配置EditText也需同時配置一個Button,這樣可以在代碼中監(jiān)聽Button的事件,以便獲取當(dāng)前在EditView中輸入的內(nèi)容并且顯示出來。在EditView可以限制輸入的字符串類型。以下簡單介紹EditText的屬性:</p><p> android:id —— 控件的標(biāo)識符</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)的字符串類型</p>&
58、lt;p> android:hint —— 設(shè)置在輸入框輸入內(nèi)容前默認(rèn)的文字</p><p> ImageView —— 標(biāo)簽可以顯示任意圖像,例如圖標(biāo)。ImageView類可以加載各種來源的圖片(如資源或圖片庫),需要計算圖像的尺寸,以便它可以在其他布局中使用,并提供例如縮放和著色等各種顯示選項,在本文用來顯示天氣圖片。以下簡為ImageView的屬性:</p><p> a
59、ndroid:id —— 設(shè)置圖片的標(biāo)識符</p><p> android:layout_width —— 設(shè)置圖片的寬度</p><p> android:layout_height —— 設(shè)置圖片的高度</p><p> android:visibility —— 設(shè)置圖片是否可見性</p><p> ProgressBar —
60、— 進(jìn)度條控件,通常在應(yīng)用程序執(zhí)行諸如復(fù)制文件或打印文檔等任務(wù)時使用。如果沒有視覺提示,應(yīng)用程序的用戶可能會認(rèn)為應(yīng)用程序不響應(yīng)。通過在應(yīng)用程序中使用 ProgressBar,可以警告用戶應(yīng)用程序正在執(zhí)行冗長的任務(wù)且應(yīng)用程序仍在響應(yīng)。以下簡單介紹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ìn)度條的值</p><p> android:layout_gravity —— 設(shè)置進(jìn)度條位置</p><p> android:style —— 設(shè)置進(jìn)度條的風(fēng)格是長方形還是圓形</p><p> Chec
62、kBox —— 復(fù)選框,通常用于某選項的打開或關(guān)閉,可以選擇任意數(shù)目的復(fù)選框;</p><p> RadioButton —— 單選框,為用戶提供由兩個或多個互斥選項組成的選項集。雖然單選按鈕和復(fù)選框看似功能類似,卻存在重要差異:當(dāng)用戶選擇某單選按鈕時,同一組中的其他單選按鈕不能同時選定。相反,卻可以選擇任意數(shù)目的復(fù)選框。定義單選按鈕組將告訴用戶,這里有一組選項,您可以從中選擇一個且只能選擇一個。</p&
63、gt;<p><b> 4 界面設(shè)計及實現(xiàn)</b></p><p><b> 4.1 加載界面</b></p><p> 加載界面是程序開始運行時加載的界面。由分析可知,界面的主要功能是為應(yīng)用程序的運行做準(zhǔn)備,包括數(shù)據(jù)庫的初始化工作,下載默認(rèn)城市天氣信息等。在界面中主要顯示的應(yīng)用程序的基本信息,內(nèi)容有學(xué)校名、英文簡稱和版權(quán)信息
64、。設(shè)計如下:</p><p> 圖4.1:加載界面設(shè)計圖</p><p> 根據(jù)設(shè)計,實現(xiàn)加載界面Load_Activity,使用的布局文件是load.xml。</p><p> 整個界面采用線性布局的方式,方向為縱向。界面中的內(nèi)容使用三個三個文本域居中顯示,用到三個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è)置引用的布局文件,然后逐個聲明布局文件中對應(yīng)的控件,并將這
76、些控件與布局文件中的對應(yīng)的控件綁定在一起。綁定過程為:引用R.java中控件元素對應(yīng)的整型值,通過強制轉(zhuǎn)換,將其轉(zhuǎn)換為對應(yīng)類型的控件,最后與之綁定。這樣做是為了方便應(yīng)用程序?qū)缑嬷械目丶M(jìn)行操作。設(shè)置過程如下:</p><p> setContentView(R.layout.load);</p><p> 界面顯示后,開始進(jìn)行應(yīng)用程序運行前的準(zhǔn)備,主要有數(shù)據(jù)庫的初始化和默認(rèn)城市的天氣
77、數(shù)據(jù)下載工作。在數(shù)據(jù)庫的初始化部分,首先檢查數(shù)據(jù)庫文件是否存在,若不存在則復(fù)制數(shù)據(jù)庫文件到指定目錄,若存在,則不進(jìn)行此項操作。數(shù)據(jù)庫初始化代碼如下:</p><p> // 初始化,轉(zhuǎn)移數(shù)據(jù)庫文件</p><p><b> try {</b></p><p> db_tools.init();</p><p>
78、System.out.println("復(fù)制數(shù)據(jù)庫");</p><p> } catch (Exception e) {</p><p> // TODO Auto-generated catch block</p><p> System.out.println("復(fù)制數(shù)據(jù)庫時候異常");</p>&l
79、t;p> e.printStackTrace();</p><p><b> }</b></p><p> 初始化數(shù)據(jù)庫文件后,進(jìn)行默認(rèn)城市天氣數(shù)據(jù)的下載工作。首先打開數(shù)據(jù)庫,查找默認(rèn)城市的程式碼,然后依據(jù)城市碼生成鏈接,啟動下載數(shù)據(jù)服務(wù)。下載過程完成后,設(shè)置下載狀態(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)碼,知道下載過程結(jié)束,然后依據(jù)狀態(tài)碼,判斷下載是否成功,在進(jìn)行操作。下載成功,則跳轉(zhuǎn)到默認(rèn)城市的實時天氣界面,下載不成功,則通知用戶聯(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, "連接超時!
85、請檢查網(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ù)成功后,表示天氣對象已經(jīng)可以使用,下載服務(wù)將關(guān)閉,然后切換到實時天氣界面。</p><p> 4.2 實時天氣界面</p><p> 實時天氣界面顯示的是一個城市的實時天氣情況
89、,是應(yīng)用程序的主界面。通過分析,界面中的內(nèi)容應(yīng)包括城市名、天氣描述、溫度、風(fēng)速、天氣圖片、日期、星期、發(fā)布時間、是否默認(rèn)城市、溫馨提示等詳細(xì)的天氣信息,對實時天氣界面設(shè)計如下:</p><p> 圖4.2:實時天氣界面設(shè)計圖</p><p> 根據(jù)設(shè)計,實現(xiàn)實時天氣界面Weather_Activity,使用的布局文件是main.xml。</p><p> 整個
90、界面的布局同樣采用線性布局的方式。這里首先將整個界面分為上下兩個部分,然后上半部分又分為左右兩個部分,在左邊顯示城市名、天氣描述、溫度、風(fēng)速,在右邊顯示天氣圖片、日期、星期、發(fā)布時間、是否為默認(rèn)城市;在下半部分顯示溫馨提示和跳轉(zhuǎn)到未來天氣的按鈕;上下部分之間用一個圖層隔開,顯示效果為一條水平線。界面中共使用到8個TextView:城市名、天氣描述、溫度、風(fēng)速、日期、星期、發(fā)布時間、提示默認(rèn),1個ImageView:天氣圖片,1個Butt
91、on:設(shè)置默認(rèn)。以實時天氣界面布局中上半部分為例來介紹:</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ā)布時間 --></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ā)布時間 結(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è)置綁定界面中的控件。界面加載到程序后,首先對界面中的控件元素進(jìn)行賦值,將程序加載時候獲得的天氣數(shù)據(jù)逐個設(shè)置為控件顯示的內(nèi)容,設(shè)置完畢后,顯示整個界面,這樣,城市的詳細(xì)天氣數(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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于android平臺的天氣軟件開發(fā)畢業(yè)論文
- 基于android平臺軟件開發(fā)方法研究
- 基于android的步行者運動軟件開發(fā)畢業(yè)論文原稿
- 軟件開發(fā)畢業(yè)論文-畢業(yè)論文
- 基于android平臺的天氣預(yù)報系統(tǒng)的設(shè)計與開發(fā)畢業(yè)論文
- 基于Android平臺的污水監(jiān)控軟件開發(fā).pdf
- android平臺天氣預(yù)報軟件設(shè)計與實現(xiàn) 畢業(yè)論文
- 基于android平臺的校園通軟件畢業(yè)論文
- 基于Android平臺的車牌識別軟件開發(fā).pdf
- 基于android平臺的手機軟件開發(fā)-基于android平臺的手機星座查詢軟件設(shè)計
- 軟件開發(fā)類畢業(yè)論文
- 畢業(yè)論文--基于android平臺的beatplane游戲開發(fā)
- 汽車銷售軟件開發(fā)【畢業(yè)論文】
- android畢業(yè)論文--基于android平臺的商城
- 基于android平臺開發(fā)的飛機射擊游戲-畢業(yè)論文
- 基于Android平臺的軟件開發(fā)方法研究與應(yīng)用.pdf
- 基于android平臺的3g氣象軟件-畢業(yè)論文
- 基于jsp軟件開發(fā)會員管理系統(tǒng)畢業(yè)論文
- 軟件工程畢業(yè)論文-基于android平臺手機茶百科開發(fā)
- android畢業(yè)論文--基于android短信平臺的管理與開發(fā)(含外文翻譯)
評論
0/150
提交評論