簡(jiǎn)析安卓版自駕天氣手機應用的設計與實(shí)現論文
1.總體設計
本系統主要是實(shí)現一個(gè)以自駕出行線(xiàn)路天氣和景區信息為核心業(yè)務(wù)的移動(dòng)端,隨時(shí)隨地為用戶(hù)提供路線(xiàn)天氣和旅游信息服務(wù)。用戶(hù)在自駕游途中,打開(kāi)應用可以查看“出發(fā)地—途徑地—目的地”的天氣情況,同時(shí)還提供美食信息,購物信息。本應用將這些信息以景點(diǎn)為基礎聯(lián)合起來(lái)。用戶(hù)可以通過(guò)一個(gè)景點(diǎn)就獲取到景點(diǎn)周邊的美食、購物等信息,可以一站式的規劃自己的出行安排。
本應用的主要分為:天氣模塊、出行模塊、景點(diǎn)模塊和實(shí)景模塊。(如圖1 所示)本應用由三個(gè)層次組成,分別為底層模塊、支持模塊和業(yè)務(wù)模塊。本著(zhù)依賴(lài)項規則:源碼依賴(lài)項只能向上指向,上層里的所有項不能了解下層所發(fā)生的內容。
2.設計與實(shí)現
2.1 天氣模塊的設計與實(shí)現
天氣模塊本身是一個(gè)Fragment,基于產(chǎn)品原型圖、用戶(hù)體驗的一致性和APK 框架的設計思想,使用了Fragment 內嵌套五個(gè)子Fragment 的形式去實(shí)現天氣的子模塊。各子模塊的Fragment 的生命周期由自己把控,當Tab 切換到子模塊上時(shí),子模塊開(kāi)始執行自己的生命周期。
2.1.1 預報和實(shí)況模塊
將布局文件和Fragment 類(lèi)建立起映射,同時(shí)給布局上的控件和類(lèi)里面的控件對象建立綁定關(guān)系通過(guò)getJSON 方法從網(wǎng)絡(luò )中獲取天氣預報和實(shí)況數據。在安卓4.0 版本及其以上的系統,為了防止網(wǎng)絡(luò )這一耗時(shí)操作阻塞UI 的繪制。因此,新開(kāi)線(xiàn)程異步地進(jìn)行網(wǎng)絡(luò )訪(fǎng)問(wèn)以獲取服務(wù)器返回的JSON 對象。本應用中網(wǎng)絡(luò )的訪(fǎng)問(wèn)均是通過(guò)這種模式去實(shí)現。
2.1.2 趨勢圖
趨勢圖使用畫(huà)布類(lèi)自行繪制,并提供API 修改趨勢圖的走向。天氣趨勢中的折線(xiàn)圖其實(shí)現的難度在于,需要一個(gè)算法去計算折線(xiàn)上的點(diǎn)在屏幕上的位置,折線(xiàn)兩點(diǎn)之間的度和計算文本的位置。本應用使用坡度系數這個(gè)值去定制折線(xiàn)。
2.1.2.1 通過(guò)屏幕的寬和所需要顯示的點(diǎn)數計算出每一段折線(xiàn)X 軸投影的長(cháng)度。float wOffset= ((float) this.getWidth() / (2 * topTem.length ‐ 1)) * 2;//X 軸投影長(cháng)度
2.1.2.2 通過(guò)屏幕的高和坡度系數,以及要顯示數據的最大值和最小值計算出中軸線(xiàn)。
2.1.3 分析圖
安卓系統中內置了高性能的Webkit 瀏覽器,在SDK 中被封裝成了WebView。首先通過(guò)網(wǎng)絡(luò )模塊提取URL,然后使用loadUrl()語(yǔ)句調用,即可在Webview 里面展示網(wǎng)頁(yè)。
2.2 出行模塊的設計與實(shí)現
2.2.1 路線(xiàn)管理
路線(xiàn)管理由路線(xiàn)列表和路線(xiàn)定制所組成,在一個(gè)FrameLayout 中寫(xiě)兩個(gè)布局,通過(guò)設置布局的可見(jiàn)度,顯示不同的布局。
在布局文件中,使用幀布局包裹兩個(gè)相對布局,其中一個(gè)相對布局的可見(jiàn)度為隱藏。并在JAVA 代碼中,對RadioButton 進(jìn)行監聽(tīng),當點(diǎn)擊到其中一個(gè)時(shí),路線(xiàn)查看界面隱藏,路線(xiàn)定制界面展示,反之亦然。
2.2.2 地圖模塊
天氣的預報、實(shí)況、預警以及路線(xiàn)的實(shí)況都與地圖有關(guān),應用的地圖使用百度地圖SDK,通過(guò)其提供的'API 進(jìn)行路線(xiàn)的繪制,地圖經(jīng)緯度的采集。
自定義線(xiàn)路的實(shí)現:有兩種形式,一是沒(méi)有途徑點(diǎn)的形式,一是有途經(jīng)點(diǎn)的形式,沒(méi)有途徑點(diǎn),即調用 drivingSearch(String strat, MKPlanNode node1, String end, MKPlanNode node2)方法就可以在地圖上顯示出路線(xiàn)了,如果擁有途經(jīng)點(diǎn),就調用它的一個(gè)重載方法—drivingSearch(String strat, MKPlanNode node1, String end, MKPlanNode node2,List nodes)
通過(guò)drivingSearch 方法我們可以在地圖上展示出一條路線(xiàn)出來(lái)。路線(xiàn)的繪制,即在圖上確認一系列的點(diǎn),將這些點(diǎn)連接成線(xiàn)段,故可以得到起點(diǎn)城市、途經(jīng)點(diǎn)城市和終點(diǎn)城市的經(jīng)緯度,通過(guò)這些經(jīng)緯度,我們在其Y軸的做出一定的偏移量,即可繪制出所需要展示的預報、實(shí)況和預警信息。
2.3 景點(diǎn)模塊的設計與實(shí)現
2.3.1 景點(diǎn)導航模塊
景點(diǎn)導航模塊由三部分構成,一是熱門(mén)景區列表,二是全國熱門(mén)景區列表(按省分),三是景點(diǎn)搜索。
熱門(mén)景區列表是一個(gè)ListView,用于展示熱門(mén)景區,點(diǎn)擊可以跳轉到景點(diǎn)介紹,以及景點(diǎn)的吃住行購。
全國熱門(mén)景點(diǎn)列表是結合百度地圖SDK 來(lái)實(shí)現的,在省級縮放度的地圖上,每一個(gè)省份在地圖上的表現是一個(gè)Button,點(diǎn)擊進(jìn)去就可以看到該省份的熱門(mén)城市。
2.3.2 吃住行購模塊
該模塊采用APK 框架,上方的Tab + 下面的Fragment。其中吃住購的實(shí)現相同,均是一排篩選器和一個(gè)ListView構成。行模塊是基于百度地圖SDK 的二次開(kāi)發(fā),展示景點(diǎn)的位置。篩選器有三個(gè),分別是距離、類(lèi)型和推薦度,采用了自定義Popup Window View 的方式實(shí)現。首先自定義一個(gè)View 類(lèi)繼承PopupWindow 和自定義的SpinnerAdapter,然后使用時(shí),初始化,并填充數據。
2.4 實(shí)景模塊的設計與實(shí)現
圖片瀑布流,即圖片如瀑布般依次展示在屏幕上。對圖片進(jìn)行分組,以寬度為定值限制圖片大小,向布局中動(dòng)態(tài)添加指定列數。
為了在圖片瀑布流的內存使用一直保持在一個(gè)合理的范圍,采用了LRU 內存緩存技術(shù),它的主要算法原理是把最近使用的對象用強引用存儲在 LinkedHashMap 中,并且把最近最少使用的對象在緩存值達到預設定值之前從內存中移除。
【簡(jiǎn)析安卓版自駕天氣手機應用的設計與實(shí)現論文】相關(guān)文章:
簡(jiǎn)析普通高職院校校園網(wǎng)絡(luò )的設計與實(shí)現論文04-22
簡(jiǎn)析私人銀行設計論文04-21
基于Web Service技術(shù)的天氣達人安卓系統的設計論文04-20
探討安卓系統的手機定位軟件開(kāi)發(fā)與設計論文02-26
安卓手機軟件課件03-30
安卓手機廣告語(yǔ)01-20
安卓手機選購指南02-25
《看云識天氣》的課文簡(jiǎn)析12-13