一个ANDROID APP的基本面

现在能用来开发ANDROID APP的语言已经不局限于JAVA了,完全可以用你喜欢的语言进行开发,比如C++可以选择QT和一些跨平台的C++框架,如果选择QT还可以使用一些脚本语言如PYTHON之类的,甚至可以用JAVASCRIPT进行开发。

那作为一个全栈工程师的你,当然你是不屑于就用一种语言通吃所有的东西,而是更喜欢原生的东西,毕竟原配才是最好的而且合情合理。

以下罗列出一个APP涉及到的几个方面

开发工具

最开始的时候是ECLIPSE加上插件,现在官方已经不支持,推荐使用ANDROID STUDIO,基本上这个IDE包装的已经很好了开箱即用。

这个IDE可以从谷歌官方下载,当然现在需要科学上网才行,或者从一些其他下载网站下载,安装完成之后即可使用,安装包括SDK和Android虚拟机,调试的时候也可以直接连接手机调试,唯一注意的一点就是这个用的是Gradle构建工具,类似Maven不过Maven用的是xml而Gradle用的是Groovy。

相关技术

我们来简单看一下一个APP的运行流程,一般情况下打开一个App首先有个加载页面然后就是引导页,引导页就是想PPT一样几个图片切换来展示整个APP所体现的功能和特性,引导页一般在第一次安装打开的时候展示,看完之后第二次打开就不会再出现了,引导页之后就是App的主界面了。

主界面是根据各类应用的功能需求个不相同,效果五花八门,比较通用的可以总结为整个主界面就是一个Tab,标题在上面,左右滑动可以切换各个Tab,如果内容很多,在屏幕的下方还有个导航,那么在各个Tab内部一般就是一个列表ListView或者GridView,或者一些栈的布局以及制定位置的布局,这些组合基本上满足绝大部分需求。

主界面上有些应用会支持左侧的一个划出菜单,左侧菜单一般会包括一些个人信息、设置菜单和退出以及一些特别的菜单导航;

菜单导航一般情况下都是打开一个新的界面,关闭之后回到主界面,主界面上的导航一般情况下是局部切换达到导航的效果,Tab内部的内容导航一般都是打开一个新的界面或者局部滚动;

有时候需要打开一些网页的内容可以使用内置的WebView容器,很方便同时可以和Javascript进行通讯。

以上就是一个App的基本运行流程,用到的基本技术有:

引导页用到ViewPage,主界面用的到Tab其实也是个ViewPage和Toolbar的结合,页面内容布局用到ListView和GridView,ListView很灵活,不仅仅就是个列表,稍加修饰就可以形成树形结构的列表,左侧菜单用到的是DrableLayout,显示网页使用的WebView以及Cookie的处理。

到目前为止这些都是从界面上所能看到的内容和相关技术,一个App能够运行起来这些还是远远不够,还有很多看不到的东西在支持着这些界面的运转。

内容和网络

内容也就是数据,包括配置信息和业务数据,配置信息也就是设置界面设置的系统用到的一些参数,参数一般使用SharePreference保存,同时SDK也提供一个通用的配置界面,简单的一些参数直接使用系统自带的界面简单有效;业务数据保存在Sqlite中。

网络一般使用Http请求,数据以JSON的格式传送,当然也可以使用XML,文件的上传下载也是可以的,如果需要一些消息推送的可以使用Socket进行通讯,建议使用WebSocket,如果需要即时通讯也可以在WebSocket之上使用一些高级的协议如STOMP协议,实现即时聊天相当方便。

夸APP通讯

应用或多或少的都会与其它App进行相互的调用,登录的时候使用微信微博等第三方平台认证,调用拍照的功能获取照片,调用文档阅读工具打开文档,调用支付宝和微信进行支付等等。

其它

系统更新,可以先把安装包下载到下载文件夹然后进行安装;

系统通知栏、进度条的使用,显示在系统通知栏的进度条,显示在页面上的进度条等;

后台进程的使用,后台线程不能对UI进行操作,必须在UI线程中操作;

Service的使用,也就是长时间的一些后台操作,不影响UI线程;

定时器的使用,开机启动等。

一些效果的使用如页面切换的效果,元素个状态下的效果如按下的效果获得焦点的效果等。

最后

以上的这些基本面掌握之后,一般的APP开发应该已经不在话下,当然游戏开发那是另外的一面,跟这些基本面还真没太大的关系。