天氣查詢功能包括信息顯示和地區(qū)選擇兩個版塊,二者均通過調用極速數(shù)據(jù)的相關接口進行實現(xiàn)。其中,信息顯示界面作為軟件首頁,默認先顯示系統(tǒng)設置的地區(qū)天氣情況,用戶可通過地區(qū)選擇的界面進行修改信息。對于天氣信息,受接口調用次數(shù)限制,系統(tǒng)設置每24小時更新一次。具體操作流程如下圖所示。
第一節(jié) 天氣信息顯示
該項使用的是極速數(shù)據(jù)的天氣預報接口,利用接口獲取指定地區(qū)當天信息(設計中顯示的是日期、當前溫度、最高溫、最低溫、城市名、星期、風向、天氣、更新時間)以及未來四天天氣相關情況(設計中顯示的是日期、最高溫、最低溫、天氣),之后將獲取信息傳遞給界面進行顯示,不同的天氣界面會通過變化圖標進行表示。
首先,在MainActivity中聲明并初始化控件,以便將獲取到的天氣信息傳入界面顯示。并設置訪問地址url,以便調用API。
(1)信息讀取
如圖3-1所示,在MainActivity中實現(xiàn)訪問網(wǎng)絡的內部類。利用AsyncTask可以在處理耗時任務的同時去更新UI的特點,讓Getweather對其進行繼承從而在該類中可以通過接口實現(xiàn)UI的進度更新,最后將訪問結果反饋給UI主線程。代碼中實現(xiàn)的是AsyncTask中的onPreExecute()、doInBackground()兩個函數(shù),此外,還定義了openConnection()函數(shù)。其中,doInBackground()為抽象函數(shù)在AsyncTask中必須實現(xiàn),此處用于在后臺將參數(shù)地址(params[0])、城市Id(params[1])傳遞給openConnection并調用其,從而開始查詢目標城市信息。
圖 3- 1獲取天氣信息的內部類Getweather
openConnection()函數(shù)代碼如圖3-2所示,在開發(fā)中用的網(wǎng)絡請求是標準Java接口HttpURLConnectio中的get請求方式。由于URL只能使用英文字母、阿拉伯數(shù)字和某些標點符號,不能使用其他文字和符號,而從doInBackground()傳來的參數(shù)中包含漢字,所以首先需要利用URLEncoder.encode()方法進行轉碼。然后獲取連接對象并設置請求方式,連接進行查詢之后得到包含天氣信息的響應流。再利用BufferedReader類采用readLine()方式將獲得的字符輸入流(即響應流)轉為文本,輸出天氣信息。
圖 3- 2 openConnection()函數(shù)
onPreExecute()函數(shù)中,將openConnection()中訪問得到的result作為參數(shù)傳入,此時得到的是JSON數(shù)據(jù)。首先先將數(shù)據(jù)轉為JSONObject形式。由于JSONObject是一個對象,JSONArray是一個數(shù)組,再結合極速數(shù)據(jù)官方給出的API調用文檔可知,獲取當天天氣信息時,同一天的各天氣信息可以看作獨立個體,分別存儲在“today”中,所以獲取當天信息應使用JSONObject,如圖3-3所示。
圖 3- 3onPreExecute()函數(shù)中獲取當天天氣信息
而對于未來天氣,應先將同一天的所有天氣信息作為一個整體看待(即先將所有天氣信息按日期進行分類,所屬日期相同的天氣信息屬于同一類),分類之后多個這樣的整體儲存在“forecast”之中構成數(shù)組,最后再分別從各個整體中讀取相應信息。所以讀取未來天氣情況時,應先使用JSONArray讓未來幾天天氣情況以日期為界限進行劃分,共同構成一個數(shù)組,數(shù)組中第1—4個元素分別為未來第1—4天,之后再用JSONObject讀取數(shù)組中每個元素其中包含的詳細天氣信息,如圖3-4所示。
?
圖 3- 4 onPreExecute()函數(shù)中獲取未來天氣信息
完成訪問網(wǎng)絡的內部類編寫之后,在onCreate()中添加圖3-5代碼開啟網(wǎng)絡訪問活動,自此實現(xiàn)在有默認地點情況下,天氣預報信息的查詢與傳遞。
圖 3- 5訪問天氣信息指令
(2)圖標更換
天氣情況的顯示除了文字方式,設計中還添加了圖片方式。以當天天氣信息顯示情況為例,如圖3-6所示,利用switch()語句以獲取到的weather(晴、多云等)為判斷依據(jù),不同的weather值則執(zhí)行不同指令,在各指令中會借助setImageResource將對應控件(nowView)的圖片進行更換。未來四天天氣圖標的變化方式與此大致相同。
文章來源:http://www.zghlxwxcb.cn/news/detail-524085.html
圖 3- 6天氣圖標變化文章來源地址http://www.zghlxwxcb.cn/news/detail-524085.html
到了這里,關于Android制作天氣預報軟件 —— 天氣查詢的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!