前言

移动应用开发又称App开发,是近年来的新兴软件开发行业。基于手机设备的特性,App开发与服务器开发、网页开发等传统软件开发有很大不同,将App开发相关技术称为一门新兴学科也不为过。

作为一门学科,必然要求建立一套理论体系,这个理论体系应当具有普遍性与适用性,不会随着工具的变迁而消亡。App开发就是如此,无论使用Android开发还是iOS开发,所采用的技术、要实现的功能都大同小异,区别在于需要使用不同的编程工具进行开发。对于用户来说,华为手机上的微信与苹果手机上的微信都是社交App,这两个微信在功能和使用上并没有显著区别。

笔者从事软件开发工作十几年,期间经历了多次编程方向的转型,先从C/C++开发转向Java开发,再从Java开发转向Android开发,而Android开发先用ADT后用Android Studio。在多次转型过程中,笔者深深体会到,无论是编程语言还是开发工具,变化的都是技术实现手段,而不是人类愿景和系统原理。人类愿景是让生活更加便捷、让娱乐更加丰富,系统原理是让软件界面更加美观、让运行速度更加流畅。

本书的写作目的是教会读者Android开发,带领读者走进一个崭新的学科领域。市面上的Android开发书籍林林总总,写作风格各有千秋,不过讲解的基本是编程开发,有的还会讲解项目管理。本书除了介绍常规的Android开发外,还尝试从两方面加以拓展,一方面从产品经理的角度仔细分析App技术能帮用户做什么事情、能带给用户什么收获;另一方面从设计师的角度详细论述如何把千篇一律的页面变得生动活泼,如何让某个功能实现得更合理、高效。

全书的内容编排采用由浅入深、循序渐进的章节体例,不但考虑初学者的学习连续性,而且可以建立一个统一、连贯的学科体系。这么编排的好处是显而易见的,读者只要按照顺序学习,就能在学习过程中对已学部分不断复习巩固,同时提前预习后面的技术点,一方面衔接自然,另一方面提高学习效率。比如第3章末尾介绍实战项目“登录App”,紧接着第4章开头介绍如何实现登录页面的记住密码功能;第12章介绍“动画”,一方面为前一章的飞掠横幅补充动画效果,另一方面为后一章的相册切换动画埋下伏笔。

全书可分为两大部分,第一部分是第1~8章,主要介绍AndroidStudio的环境搭建,App开发的各种常用控件,App的数据存储方式。如何调试App并将App发布上线,这部分囊括了App开发的基础知识,特别详细说明App从开发到调试再到上线的企业级开发流程。第二部分是第9~16章,主要介绍App开发的高级部分,包括设备操作、网络通信、事件、动画、多媒体、融合技术、第三方开发包、性能优化等,这部分涵盖App开发的进阶内容,与第一部分相比就像是“鸟枪换炮”,让开发者完成从游击队到正规军的华丽转变。

建议初学者和在校学生完整学习第1~8章内容,因为这部分包含App开发的必备技能,只有打好基础,才能进一步学习。至于第9~16章内容,根据前面的学习情况和个人兴趣爱好选择相应的章节学习即可。如果倾向于学习工具类App的开发,就可以选择学习“第9章 设备操作”“第11章 事件”“第12章 动画”“第13章 多媒体”;如果倾向于学习企业类App的开发,就可以选择学习“第10章 网络通信”“第14章 融合技术”“第15章 第三方开发包”“第16章 性能优化”。

对于有经验的开发者来说,可以自行选择不熟悉的知识点拾遗补缺。另外,本书讲述的部分知识点很具特色,如卫星导航、Socket通信、多点触控、百叶窗动画、音乐播放器、蓝牙技术、支付SDK、图片缓存原理等,这些内容在同类Android入门书籍中鲜有论述,有兴趣的读者可重点关注。

当然,本书面向的读者不仅是开发人员和计算机专业学生,也包括移动互联网行业的其他从业人员。对于产品经理来说,可以了解一下某个功能使用的技术,看似简单的功能,也许并不容易实现。对于设计师来说,“他山之石,可以攻玉”,可以参考一下别人的实现方式,也许正好可以激发你的灵感,其实不无裨益。对于测试人员来说,可以熟悉一下每项技术的优缺点,从而制订出更全面的测试方案,也许能发现更多BUG。

本书所有代码都基于Android Studio 2.2.3开发,并使用API 25的SDK(Android 7.1.1)编译与调试通过。读者在阅读本书时,若对书中内容有疑问,可在笔者的博客(http://blog.csdn.net/aqi00)留言。

本书范例的素材和代码下载地址为:http://pan.baidu.com/s/1dFEFEhF(注意区分数字和英文字母大小写)。如果下载有问题,请发送电子邮件至booksaga@126.com,邮件主题设置为“求从零基础到App上线下载资源”。

最后,感谢王金柱编辑的热情指点,感谢我的家人一直以来的支持,没有他们的鼎力相助,本书就无法顺利完成。

欧阳燊

2017年1月