天氣預(yù)報(bào) APP 的設(shè)計(jì)與實(shí)現(xiàn)
時(shí)間:2023-06-05 01:30:01 | 來源:網(wǎng)站運(yùn)營
時(shí)間:2023-06-05 01:30:01 來源:網(wǎng)站運(yùn)營
天氣預(yù)報(bào) APP 的設(shè)計(jì)與實(shí)現(xiàn):
一、需求分析
背景
天氣信息和人們的日常生活息息相關(guān),隨著人們活動范圍的擴(kuò)大和出行需要,天氣預(yù)報(bào)已經(jīng)成為人們生活不可缺少的一部分,在這樣的市場需求的基礎(chǔ)上,本人設(shè)計(jì)了天氣預(yù)報(bào)軟件,它可以提供天氣相關(guān)信息和生活指數(shù),用戶可以通過軟件及時(shí)獲取近期的天氣狀況和變化,及時(shí)做好各方面的計(jì)劃和防護(hù)措施。
需求總體介紹
天氣預(yù)報(bào)的用戶主要是對獲取天氣信息有需求的人群,對于普通用戶來說,主要了解當(dāng)日的天氣情況,選擇相應(yīng)的穿衣搭配和出行安排,對于相關(guān)行業(yè)人員來說,可根據(jù)未來天氣狀況制定相關(guān)措施,保證行業(yè)項(xiàng)目的順利實(shí)施。因此天氣預(yù)報(bào)的受眾需要了解目前天氣狀況和未來的天氣變化等,對其他的城市天氣狀況也會有所關(guān)注。
- 系統(tǒng)的功能性需求
- 自動定位當(dāng)前位置,自動更新當(dāng)前位置天氣信息,也可查詢不同城市的天氣信息。
- 查詢信息的結(jié)果主要包括溫度、天氣狀況、風(fēng)力、空氣指數(shù)、生活指數(shù)等。
- 提供未來幾天及小時(shí)天氣狀況并顯示。
- 提供個人偏好設(shè)置,分享天氣信息,關(guān)于本軟件等。
- 用例圖
系統(tǒng)的非功能性需求
用戶界面需求
界面簡潔明了,采用圖標(biāo)加文字結(jié)合的方式,易于用戶理解,對于重要信息,放大進(jìn)行顯示,界面排列符合閱讀邏輯。
軟硬件需求
客戶端操作系統(tǒng):Android 4.0 及以上;
客戶端硬件設(shè)備:Android 手機(jī)等移動終端
產(chǎn)品質(zhì)量需求
二、系統(tǒng)設(shè)計(jì)
體系結(jié)構(gòu)設(shè)計(jì)
系統(tǒng)功能模塊劃分
針對此天氣預(yù)報(bào) APP,按照設(shè)計(jì)的基本要求,可以將系統(tǒng)劃分為下面幾個功能模塊:
天氣顯示界面模塊
顯示城市天氣狀況,包括溫度,天氣,風(fēng)力,生活指數(shù)等信息,顯示未來七天天氣,及小時(shí)級天氣。通過滑動切換不同城市的天氣信息。
城市設(shè)置模塊
編輯天氣城市列表信息。
城市增加模塊
用戶可通過列表選擇或搜索進(jìn)行城市的添加。
分享模塊
用戶可通過分享按鈕將天氣信息分享給其他用戶。
數(shù)據(jù)設(shè)計(jì)
本軟件數(shù)據(jù)庫主要包含用戶添加的城市數(shù)據(jù),結(jié)構(gòu)較為簡單,由一個城市表組成。
人機(jī)交互設(shè)計(jì)
界面流設(shè)計(jì)
功能界面原型設(shè)計(jì)
三、系統(tǒng)實(shí)現(xiàn)
系統(tǒng)目錄結(jié)構(gòu)
├─build
├─libs
└─src
├─androidTest
├─main
│ ├─assets
│ ├─Java
│ │ └─com
│ │ └─taimin
│ │ └─weatherforecast
│ │ ├─Adapter //適配器目錄
│ │ ├─bean //bean 類
│ │ ├─db //數(shù)據(jù)庫適配器
│ │ ├─fragment //fragment 文件
│ │ ├─utils //工具類
│ │ └─view //view 文件
│ └─res
│ ├─drawable
│ ├─drawable-v24
│ ├─layout
│ ├─mipmap-anydpi-v26
│ ├─mipmap-hdpi
│ ├─mipmap-mdpi
│ ├─mipmap-xhdpi
│ ├─mipmap-xxhdpi
│ ├─mipmap-xxxhdpi
│ └─values
└─test
系統(tǒng)功能實(shí)現(xiàn)
軟件通過 activity+fragment 進(jìn)行布局,通過控制 fragment 的切換來切換不同的頁面,為了防止重復(fù)切換帶來的卡頓,fragment 均進(jìn)行了緩存處理。
天氣預(yù)報(bào)主界面
界面展示
主界面是一個 fragment,采用 RelativeLayout(頂部欄)+ViewPager 來實(shí)現(xiàn)不同城市天氣的切換,通過對 viewpager 監(jiān)聽實(shí)現(xiàn)頂部欄城市及背景的切換,用戶在進(jìn)入 app 時(shí)系統(tǒng)會自動進(jìn)行定位并將當(dāng)前位置設(shè)置當(dāng)前城市,具體代碼為:
城市管理
用戶通過點(diǎn)擊主界面右上角圖標(biāo)即可進(jìn)入該界面,用戶可以通過該界面進(jìn)行快速選擇城市,刪除城市等功能,選擇城市后即可快速跳轉(zhuǎn)到 viewpager 制定頁面。具體代碼如下:
城市選擇
城市選擇界面首先會進(jìn)行定位,頁面分為五個部分,分別為搜索欄,定位欄,熱門城市,城市列表,側(cè)邊滑動條,用戶可通過選擇或搜索來完成城市的添加。部分代碼如下:
天氣分享
用戶點(diǎn)擊頁面的右上角即可進(jìn)行當(dāng)前城市信息的分享操作。具體代碼如下:
雷達(dá)云圖
雷達(dá)云圖功能采用 webview 方式,接入中國天氣網(wǎng)雷達(dá)云圖 h5 頁面實(shí)現(xiàn)。
我的
四、總結(jié)
項(xiàng)目技術(shù)總結(jié)
整個 app 實(shí)現(xiàn)了對天氣預(yù)報(bào)的獲取、展示,位置的獲取等功能。通過安卓網(wǎng)絡(luò)編程的方式可以很方便的獲取到天氣 JSON 數(shù)據(jù),通過使用 GSON 庫,解析為我們軟件需要的數(shù)據(jù)結(jié)構(gòu),給軟件的編寫提供了極大的便利。安卓的 Activity、Fragment、Service 等提供了強(qiáng)大的數(shù)據(jù)處理功能,使各個頁面間可以靈活的傳輸數(shù)據(jù)。界面采用了 viewpager 與 fragment 結(jié)合的方式進(jìn)行設(shè)計(jì),每個 fragment 對應(yīng)一個城市頁面,可以通過滑動進(jìn)行翻頁控制。且為防止多頁面造成的卡頓,app 會首先進(jìn)行 fragment 的初始化緩存,使軟件響應(yīng)速度得到提升。
技術(shù)創(chuàng)新及特點(diǎn)
通過 GSON 庫解析請求到的 JSON 數(shù)據(jù),GSON 是 Google 提供的用來在 Java 對象和 JSON 數(shù)據(jù)之間進(jìn)行映射的 Java 類庫??梢詫⒁粋€ JSON 字符轉(zhuǎn)成一個 Java 對象,或者將一個 Java 轉(zhuǎn)化為 JSON 字符串,使用更加靈活。
對于一些通用的工具函數(shù)進(jìn)行了封裝,便于使用。
城市天氣信息與軟件背景對應(yīng)更新,增加了軟件的統(tǒng)一性。
采用下拉刷新的方式進(jìn)行天氣信息的更新,更加方便快捷。
個人收獲與體會
經(jīng)過本學(xué)期對 Android 開發(fā)的學(xué)習(xí)以及本項(xiàng)目的編寫,使我學(xué)到了許多開發(fā)相關(guān)的知識,比如 Android 環(huán)境的搭建,Intent、Activity、fragment、SQLite 的用法以及網(wǎng)絡(luò)編程相關(guān)內(nèi)容。因?yàn)楸緦W(xué)期同時(shí)開展了軟件工程課程,使我對軟件的工程化構(gòu)建有了一個初步的了解,避免了以往編寫程序時(shí)耦合高、軟件功能未分離等缺點(diǎn)。同時(shí)也讓我了解到了 Android 的布局方式,使我編寫出了美觀的軟件界面。軟件的編寫不是一帆風(fēng)順的,在使用 view pager 做滑動切換時(shí),我遇到了頁面卡頓、數(shù)據(jù)不更新、fragment 間通信等一些困難,但都一一克服了,這也讓對 Android 開發(fā)有了更加深入的了解。我相信我的軟件在各個方面還有許多需要改進(jìn)的地方,同時(shí)軟件還可以進(jìn)一步發(fā)展,添加一些對用戶有利的功能,未來我會繼續(xù)進(jìn)行完善。
最后感謝老師及同學(xué)們的幫助,使我解決了軟件開發(fā)方面的一些問題,使得軟件順利開發(fā)完成。
關(guān)鍵詞:實(shí)現(xiàn),設(shè)計(jì),天氣預(yù)報(bào)