1. 程式人生 > >【安卓開發】一個簡單快遞查詢APP實例的實現摘要

【安卓開發】一個簡單快遞查詢APP實例的實現摘要

客戶 開發工具 快遞公司 解析結果 解析 了解 又是 都是 dst

前言

做畢業設計涉及到安卓開發,決定好好學習安卓開發。在正式做畢業設計之前,有必要先設計和完成一個與畢業設計最終成果相關的demo或者說樣例APP。最終畢業設計需要實現的功能包括通過調用PHP端API實現JSON獲取和解析,等功能。而快遞查詢APP恰好具有我最終實現功能大部分的前置效果,故選取制作一個快遞查詢APP來練手

關鍵詞

安卓開發、JSON 、API 、HTTP、畢業設計

歷程記錄

平臺和工具(開發、調試、運行)

本案例使用的開發工具為AndroidStudio3.4,在開發向導內選擇從安卓4.0之後開始兼容。調試和運行的平臺是創建的虛擬設備pixel2 API24,使用的是基於X86的運行環境。項目選擇“empty project”模板。其他沒什麽需要設置的了。

目錄結構

除了創建新空項目產生的默認文件(如果你也在做,為了確保我未改動部分和你一樣,請務必確保選擇的Androidstudio版本和我的一致,並且最小兼容的版本之類的也和我一致。調試和運行環境與這個生成無關),本人參與改動或新增的文件見fig2。其中,綠色表示新建文件,紅色表示修改文件,藍色表示未動的文件/目錄(如果是目錄,則單純指名字未動,總之你肯定是看得懂的)。如果你的顯示目錄情況和我的不一樣,請將fig1紅色箭頭指向的選項改動到project

技術分享圖片

Fig1.目錄顯示選項

技術分享圖片

Fig2.項目目錄結構

編輯思路

(1) 布局

安卓界面的布局通過撰寫xml格式布局文件完成。

我們首先要明白在這個工程中,xml文件的脈絡。那麽在我設計這個的這個簡易快遞查詢中,只有一個界面,這個界面總體是從上到下布局,其中中間要有一層內再左右布局兩塊。從上到下第一個模塊是標題,第三個模塊是按鈕,第四個模塊是快遞物流信息展示,第二個模塊用於承載在這個裏面從左到右的兩個模塊,一個是快遞單號輸入框,一個是快遞公司選擇框。

一般說來在進行產品設計的時候,我們都需要畫一個草圖。市面上有很多的成熟草圖和粗產品設計軟件,但是我也不會用,我也懶得問。對於這種簡易的工程,我們可大可小。在這種單界面、流程簡單、以學習安卓基本框架為主的開發流程內,我們用畫圖軟件畫一下布局就可以了。

技術分享圖片

那麽,我們在明白了在這樣的一個APP內需要放入什麽樣的內容,就可以看懂我撰寫的布局文件activity_main.xml.

其和其他幾個你在之前所看到的目錄改動的xml文件相互關系如圖:

技術分享圖片

其中,activity_main.xml為主布局文件,但是設計的系統內,文本編輯框內不是空空如也,也有背景顏色(為了美觀),在從上到下的第三部分內需要承載物流信息,本身需要被定位。所以,單純的一個主布局文件無法滿足需求。為了更好的在後期明白邏輯關系,方便修改,所以我們分離出edit_bg.xml和item_list.xml兩個文件,並鏈接到activity_main.xml的對應位置。

具體我們在編輯的文件中給大家展示一下:

技術分享圖片

(2) 邏輯

該APP的功能實現,我們首先要明白一個快遞查詢流程是什麽樣子的。那麽在我的這個查詢APP內,是需要客戶手動輸入快遞單號,並選擇快遞公司,才能進行查詢的。信息查詢返回的結果是依靠快遞100(網上瞎搜得到的一個免費API)的API實現。當然,很明顯如果能夠掃碼識別或者是根據快遞單號自動識別快遞公司都是再好不過的。不過這並不影響核心功能,不影響我們對於功能的抽象。而且,我們設計出來的功能,只需要保證後續擴展性良好即可。

使用流程大致是:用戶輸入完快遞號碼,選擇完快遞公司,點擊查詢,APP向API發送請求,返回結果,解析結果,展示結果。

那麽我們再用一個圖片來展示一下:

技術分享圖片

這時候,我們已經明白了這個程序用戶交互的一個基本邏輯,那麽我們圍繞這個基本邏輯,配合安卓開發的相關技巧,實現功能就不是難題啦!

功能實現涉及的額外技術

現在,我們已經明白了這個APP的基本頁面布局,完成了草圖樣的界面布局設計,並且明確了交互邏輯,了解了大致的交互流程。那麽在上一節文末,我說在配合安卓開發的相關技巧,這個程序就可以輕松做出。但其實這個相關技巧的範圍太過寬泛了,那麽我現在假定大家已經明白了安卓的權限控制、布局文件結構和基本java語法,以及java內程序數據如何與界面數據相關聯。這裏簡要介紹兩個與具體業務相關的處理技能。

一個是HTTP請求發送,一個是JSON數據解析。那麽有基礎知識的人應該明白,明白了HTTP的請求方法,我們就可以調用API。明白了JSON數據解析的手段,我們才可以將返回的原始數據變為程序展示需要的數據,最終變成大家都能看懂、直觀的最終展示結果。

(1) 安卓內的HTTP請求方法

安卓內HTTP請求等同JAVA下的HTTP請求方法。

關於JAVA下HTTP的請求方法,這裏直接貼出一篇文章:https://www.cnblogs.com/hhhshct/p/8523697.html

在本APP中,我們又是如何使用HTTP請求方法實現的API調用呢?

技術分享圖片

在本程序中,我們通過撰寫sendRequest()來實現對按鈕點擊事件的響應。由於在本APP中唯一的按鈕,目的就是為了把之前輸入和調整好的數據打包送出,發起對快遞100 API的調用,所以相當於這個按鈕點擊的主要作用就是實現HTTP請求調用。

我們來看一下這個函數的源碼:

技術分享圖片

在這個APP中,我們采取apache封裝好的httpclient方法來進行http請求。具體核心語句的解釋可以看圖。

(2) 安卓內的JSON解析方法,以及展示的代碼撰寫

安卓內JSON解析方法等同JAVA下的HTTP請求方法。

這邊也貼出一個介紹java json解析相關的博客地址:https://www.cnblogs.com/boy1025/p/4551593.html

那麽既然我們需要解析數據,我們就要看看通過這個api發送請求,到底會得到什 麽樣的數據。

技術分享圖片

我們可以看到,這個API裏面有兩個參數,一個是快遞公司的拼音(查對應的公司代碼),還有一個就是快遞單號。我們隨便選擇一家快遞公司,輸入一個錯誤的快遞單號,看到結果如圖。

我們需要展示的內容就是data後面json數組內的每一個小過程。

這裏貼出對應的函數源代碼來:

技術分享圖片

其實這個函數做的內容就是把之前httpRequest()得到的數據,處理後填到listView內。

全流程說明

很榮幸,到這裏,我的這個小項目的設計規劃、基本草圖、布局安排、程序邏輯安排和程序中可能的難點都介紹OK了。當然還有一些細枝末節的東西,我相信如果你想復刻我這個項目,有了上面的綱領性文件,解決那些小問題都so easy!

我們再用一個圖的形式,看一下這個APP一個具體的處理流程吧!

技術分享圖片

程序源碼

這裏直接貼出程序源碼的下載地址,本人已經上傳到CSDN。

【安卓開發】一個簡單快遞查詢APP實例的實現摘要