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