【安卓开发】⼀个简单快递查询APP实例的实现摘要
前⾔
做毕业设计涉及到安卓开发,决定好好学习安卓开发。在正式做毕业设计之前,有必要先设计和完成⼀个与毕业设计最终成果相关的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⽂件的脉络。那么在我设计这个的这个简易快递查询中,只有⼀个界⾯,这个界⾯总体是从上到下布局,其中中间要有⼀层内再左右布局两块。从上到下第⼀个模块是标题,第三个模块是按钮,第四个模块是快递物流信息展⽰,第⼆个模块⽤于承载在这个⾥⾯从左到右的两个模块,⼀个是快递单号输⼊框,⼀个是快递公司选择框。
⼀般说来在进⾏产品设计的时候,我们都需要画⼀个草图。市⾯上有很多的成熟草图和粗产品设计软件,但是我也不会⽤,我也懒得问。对于这种简易的⼯程,我们可⼤可⼩。在这种单界⾯、流程简单、以学习安卓基本框架为主的开发流程内,我们⽤画图软件画⼀下布局就可以了。
其和其他⼏个你在之前所看到的⽬录改动的xml⽂件相互关系如图:
其中,l为主布局⽂件,但是设计的系统内,⽂本编辑框内不是空空如也,也有背景颜⾊(为了美观),在从上到下的第三部分内需要承载物流信息,本⾝需要被定位。所以,单纯的⼀个主布局⽂件⽆法满⾜需求。为了更好的在后期明⽩逻辑关系,⽅便修改,所以我们分离出
l和l两个⽂件,并链接到l的对应位置。
具体我们在编辑的⽂件中给⼤家展⽰⼀下:
(2)逻辑
该APP的功能实现,我们⾸先要明⽩⼀个快递查询流程是什么样⼦的。那么在我的这个查询APP内,是需要客户⼿动输⼊快递单号,并选择快递公司,才能进⾏查询的。信息查询返回的结果是依靠快递100(⽹上瞎搜得到的⼀个免费API)的API实现。当然,很明显如果能够扫码识别或者是根据快递单号⾃动识别快递公司都是再好不过的。不过这并不影响核⼼功能,不影响我们对于功能的抽象。⽽且,我们设计出来的功能,只需要保证后续扩展性良好即可。
使⽤流程⼤致是:⽤户输⼊完快递号码,选择完快递公司,点击查询,APP向API发送请求,返回结果,解析结果,展⽰结果。
那么我们再⽤⼀个图⽚来展⽰⼀下:
这时候,我们已经明⽩了这个程序⽤户交互的⼀个基本逻辑,那么我们围绕这个基本逻辑,配合安卓开发的相关技巧,实现功能就不是难题啦!
功能实现涉及的额外技术
现在,我们已经明⽩了这个APP的基本页⾯布局,完成了草图样的界⾯布局设计,并且明确了交互逻辑,了解了⼤致的交互流程。那么在上⼀节⽂末,我说在配合安卓开发的相关技巧,这个程序就可以轻松做出。但其实这个相关技巧的范围太过宽泛了,那么我现在假定⼤家已经明⽩了安卓的权限控制、布局⽂件结构和基本java语法,以及java内程序数据如何与界⾯数据相关联。这⾥简要介绍两个与具体业务相关的处理技能。
⼀个是HTTP请求发送,⼀个是JSON数据解析。那么有基础知识的⼈应该明⽩,明⽩了HTTP的请求⽅法,我们就可以调⽤API。明⽩了JSON数据解析的⼿段,我们才可以将返回的原始数据变为程序展⽰需要的数据,最终变成⼤家都能看懂、直观的最终展⽰结果。
(1)安卓内的HTTP请求⽅法
安卓内HTTP请求等同JAVA下的HTTP请求⽅法。
关于JAVA下HTTP的请求⽅法,这⾥直接贴出⼀篇⽂章:
在本APP中,我们⼜是如何使⽤HTTP请求⽅法实现的API调⽤呢?
在本程序中,我们通过撰写sendRequest()来实现对按钮点击事件的响应。由于在本APP中唯⼀的按钮,⽬的就是为了把之前输⼊和调整好的数据打包送出,发起对快递100 API的调⽤,所以相当于这个按钮点击的主要作⽤就是实现HTTP请求调⽤。
我们来看⼀下这个函数的源码:
在这个APP中,我们采取apache封装好的httpclient⽅法来进⾏http请求。具体核⼼语句的解释可以看图。
(2)安卓内的JSON解析⽅法,以及展⽰的代码撰写
安卓内JSON解析⽅法等同JAVA下的JSON解析⽅法。
这边也贴出⼀个介绍java json解析相关的博客地址:
那么既然我们需要解析数据,我们就要看看通过这个api发送请求,到底会得到什么样的数据。
我们可以看到,这个API⾥⾯有两个参数,⼀个是快递公司的拼⾳(查对应的公司代码),还有⼀个就是快递单号。我们随便选择⼀家快递公司,输⼊⼀个错误的快递单号,看到结果如图。
我们需要展⽰的内容就是data后⾯json数组内的每⼀个⼩过程。
这⾥贴出对应的函数源代码来:
其实这个函数做的内容就是把之前httpRequest()得到的数据,处理后填到listView内。
全流程说明
很荣幸,到这⾥,我的这个⼩项⽬的设计规划、基本草图、布局安排、程序逻辑安排和程序中可能的难点都介绍OK了。当然还有⼀些细枝末节的东西,我相信如果你想复刻我这个项⽬,有了上⾯的纲领性⽂件,解决那些⼩问题都so easy!
我们再⽤⼀个图的形式,看⼀下这个APP⼀个具体的处理流程吧!
程序源码
这⾥直接贴出程序源码的下载地址,本⼈已经上传到CSDN。