Kotlin从零到精通Android开发

更多详情

内容简介: 本书是一部讲解Kotlin语言的入门书籍,从Kotlin语言的基本语法一直讲到如何将其运用于Android开发。由浅入深、从理论到实战,帮助读者快速掌握Kotlin开发技巧。
全书共有10章内容,可分为三大部分:第一部分即第1章,主要介绍Kotlin语言的开发环境搭建;第二部分包含第2~5章,主要介绍Kotlin的基本语法知识,包括Kotlin的变量声明、控制语句、函数定义、类与对象等;第三部分包含第6~10章,主要介绍如何使用Kotlin进行实际的App开发工作,包括利用Kotlin操作简单控件、复杂控件、数据存储、自定义控件、网络通信等。为增强学习Kotlin语言的趣味,本书在讲解Kotlin的用法时,特别注意结合生活中的具体案例,并加以示范和运用。尤其是后面讲到利用Kotlin开发App的时候,精心设计了数个电商App的实战模块,例如电商App的登录模块、频道模块、购物车模块、团购模块、升级模块等。通过这些实战小项目,读者可迅速将Kotlin应用于App开发工作中。
本书适用于Android开发的广大从业者、Kotlin语言的业余爱好者,也可用作大中专院校与培训机构的Kotlin课程教材。

目录:
第1章 搭建Kotlin开发环境 1
1.1 Kotlin与Android开发的关系 1
1.1.1 Kotlin语言简介 1
1.1.2 Android Studio的官方开发语言 2
1.2 Kotlin开发工具 2
1.2.1 安装Android Studio 2
1.2.2 启动Android Studio 4
1.2.3 创建Kotlin工程 5
1.2.4 新建Kotlin文件 8
1.3 SDK安装与插件升级 10
1.3.1 安装最新版SDK 10
1.3.2 升级Gradle插件 11
1.3.3 升级Kotlin插件 12
1.4 Kotlin简单配置 14
1.4.1 调整Kotlin编译配置 14
1.4.2 修改编译配置文件 15
1.4.3 Java代码转Kotlin代码 16
1.5 Kotlin相关技术 18
1.5.1 Kotlin代码与Java代码PK 18
1.5.2 Anko库 21
1.5.3 Lambda表达式 22
1.6 小结 23
第2章 数据类型 24
2.1 基本数据类型 24
2.1.1 基本类型的变量声明 24
2.1.2 简单变量之间的转换 25
2.2 数组 26
2.2.1 数组变量的声明 27
2.2.2 数组元素的操作 28
2.3 字符串 29
2.3.1 字符串与基本类型的转换 29
2.3.2 字符串的常用方法 29
2.3.3 字符串模板及其拼接 30
2.4 容器 31
2.4.1 容器的基本操作 31
2.4.2 集合Set/MutableSet 32
2.4.3 队列List/MutableList 34
2.4.4 映射Map/MutableMap 36
2.5 小结 38
第3章 控制语句 39
3.1 条件分支 39
3.1.1 简单分支 39
3.1.2 多路分支 40
3.1.3 类型判断 42
3.2 循环处理 43
3.2.1 遍历循环 44
3.2.2 条件循环 45
3.2.3 跳出多重循环 46
3.3 空安全 48
3.3.1 字符串的有效性判断 48
3.3.2 声明可空变量 49
3.3.3 校验空值的运算符 50
3.4 等式判断 52
3.4.1 结构相等 52
3.4.2 引用相等 53
3.4.3 s和in 55
3.5 小结 57
第4章 函数运用 58
4.1 函数的基本用法 58
4.1.1 与Java声明方式的区别 58
4.1.2 输入参数的格式 59
4.1.3 输出参数的格式 60
4.2 输入参数的变化 62
4.2.1 默认参数 62
4.2.2 命名参数 63
4.2.3 可变参数 64
4.3 几种特殊函数 66
4.3.1 泛型函数 66
4.3.2 内联函数 67
4.3.3 简化函数 68
4.3.4 尾递归函数 69
4.3.5 高阶函数 69
4.4 增强系统函数 71
4.4.1 扩展函数 71
4.4.2 扩展高阶函数 72
4.4.3 日期时间函数 73
4.4.4 单例对象 75
4.5 小结 77
第5章 类和对象 78
5.1 类的构造 78
5.1.1 类的简单定义 78
5.1.2 类的构造函数 79
5.1.3 带默认参数的构造函数 81
5.2 类的成员 83
5.2.1 成员属性 83
5.2.2 成员方法 86
5.2.3 伴生对象 87
5.2.4 静态属性 88
5.3 类的继承 89
5.3.1 开放性修饰符 89
5.3.2 普通类继承 91
5.3.3 抽象类 93
5.3.4 接口 94
5.3.5 接口代理 96
5.4 几种特殊类 99
5.4.1 嵌套类 100
5.4.2 内部类 100
5.4.3 枚举类 101
5.4.4 密封类 103
5.4.5 数据类 104
5.4.6 模板类 105
5.5 小结 107
第6章 Kotlin使用简单控件 108
6.1 使用按钮控件 108
6.1.1 按钮Button 108
6.1.2 复选框CheckBox 111
6.1.3 单选按钮RadioButton 112
6.2 使用页面布局 114
6.2.1 线性布局LinearLayout 114
6.2.2 相对布局RelativeLayout 118
6.2.3 约束布局ConstraintLayout 119
6.3 使用图文控件 124
6.3.1 文本视图TextView 124
6.3.2 图像视图ImageView 127
6.3.3 文本编辑框EditText 128
6.4 Activity活动跳转 130
6.4.1 传送配对字段数据 130
6.4.2 传送序列化数据 132
6.4.3 跳转时指定启动模式 134
6.4.4 处理返回数据 137
6.5 实战项目:电商App的登录页面 138
6.5.1 需求描述 138
6.5.2 开始热身:提醒对话框AlertDialog 139
6.5.3 控件设计 141
6.5.4 关键代码 141
6.6 小结 144
第7章 Kotlin操纵复杂控件 145
7.1 使用视图排列 145
7.1.1 下拉框Spinner 145
7.1.2 列表视图ListView 149
7.1.3 网格视图GridView 154
7.1.4 循环视图RecyclerView 156
7.2 使用材质设计MaterialDesign 165
7.2.1 协调布局CoordinatorLayout 165
7.2.2 工具栏Toolbar 167
7.2.3 应用栏布局AppBarLayout 169
7.2.4 可折叠工具栏布局CollapsingToolbarLayout 173
7.2.5 仿支付宝首页的头部伸缩特效 177
7.3 实现页面切换 181
7.3.1 翻页视图ViewPager 182
7.3.2 碎片Fragment 184
7.3.3 标签布局TabLayout 187
7.4 广播收发Broadcast 190
7.4.1 收发临时广播 191
7.4.2 接收系统广播 194
7.5 实战项目:电商App的商品频道 196
7.5.1 需求描述 196
7.5.2 开始热身:下拉刷新布局SwipeRefreshLayout 197
7.5.3 控件设计 201
7.5.4 关键代码 201
7.6 小结 203
第8章 Kotlin进行数据存储 205
8.1 使用共享参数SharedPreferences 205
8.1.1 共享参数读写模板Preference 205
8.1.2 属性代理等黑科技 208
8.1.3 实现记住密码功能 210
8.2 使用数据库SQLite 211
8.2.1 数据库帮助器SQLiteOpenHelper 211
8.2.2 更安全的ManagedSQLiteOpenHelper 213
8.2.3 优化记住密码功能 220
8.3 文件I/O操作 222
8.3.1 文件保存空间 222
8.3.2 读写文本文件 224
8.3.3 读写图片文件 225
8.3.4 遍历文件目录 227
8.4 Application全局变量 228
8.4.1 Application单例化 228
8.4.2 利用Application实现全局变量 231
8.5 实战项目:电商App的购物车 232
8.5.1 需求描述 232
8.5.2 开始热身:选项菜单OptionsMenu 233
8.5.3 控件设计 235
8.5.4 关键代码 236
8.6 小结 240
第9章 Kotlin自定义控件 242
9.1 自定义普通视图 242
9.1.1 构造对象 242
9.1.2 测量尺寸 245
9.1.3 绘制部件 249
9.2 自定义简单动画 252
9.2.1 任务Runnable 252
9.2.2 进度条ProgressBar 255
9.2.3 自定义文本进度条 257
9.2.4 实现进度条动画 258
9.3 自定义通知栏 259
9.3.1 通知推送Notification 260
9.3.2 大视图通知 262
9.3.3 三种特殊的通知类型 265
9.3.4 远程视图RemoteViews 269
9.3.5 自定义折叠式通知 272
9.4 Service服务启停 274
9.4.1 普通方式启动服务 274
9.4.2 绑定方式启动服务 277
9.4.3 推送服务到前台 279
9.5 实战项目:电商App的生鲜团购 283
9.5.1 需求描述 283
9.5.2 开始热身:震动器Vibrator 284
9.5.3 控件设计 287
9.5.4 关键代码 287
9.6 小结 289
第10章 Kotlin实现网络通信 291
10.1 多线程技术 291
10.1.1 大线程Thread与消息传递 291
10.1.2 进度对话框ProgressDialog 295
10.1.3 异步任务doAsync和doAsyncResult 297
10.2 访问HTTP接口 300
10.2.1 移动数据格式JSON 301
10.2.2 JSON串转数据类 303
10.2.3 HTTP接口调用 304
10.2.4 HTTP图片获取 306
10.3 文件下载操作 308
10.3.1 下载管理器DownloadManager 308
10.3.2 自定义文本进度圈 313
10.3.3 在页面上动态显示下载进度 316
10.4 ContentProvider内容提供 319
10.4.1 内容提供器ContentProvider 319
10.4.2 内容解析器ContentResolver 322
10.4.3 内容观察器ContentObserver 325
10.5 实战项目:电商App的自动升级 329
10.5.1 需求描述 329
10.5.2 开始热身:可变字符串SpannableString 330
10.5.3 控件设计 333
10.5.4 关键代码 334
10.6 小结 337

前言:
新技术的发展日新月异,编程语言也不例外,从早期的机器语言到汇编语言,再到以C语言为代表的高级语言,一路衍生了C++、Java、Objective-C等庞大的编程语言家族。其中,Java经过多年的发展已经是一枝独秀,不但在服务端的开发中占据优势,而且在客户端的安卓开发上也形成垄断之势。不过,由于Java语言诞生较早(诞生于20世纪90年代中期),使得它不可避免地存在一些先天不足,比如业务代码过于冗长、处理逻辑不够灵活、安全隐患层出不穷等。鉴于此,一方面Java语言不断更新换代,到2017年已经迭代到了Java 9版本;另一方面,人们也试图设计新的语言以便更好地“填坑”,于是涌现了Scala、Groovy、Clojure等新兴语言,而Kotlin就是这些新兴语言中的佼佼者。
Kotlin问世于2011年,作为后起之秀的它虽然拥有代码简洁、函数式编程、更安全健壮、百分百兼容Java等诸多特性,但是前有C++、Java等老语言根深叶茂,后有Python、Go等新语言紧追不舍,Kotlin头几年的发展一直不温不火。直到这两年,在JetBrains、Google等公司的大力扶持之下,Kotlin的发展才驶上了快车道,先是在2016年2月推出Kotlin 1.0发布版,再是谷歌公司在2017年5月宣布将Kotlin作为Android的官方开发语言,然后在2017年10月推出的Android Studio 3.0正式集成了Kotlin开发环境,紧接着更完善的Kotlin 1.2正式版在2017年11月发布。正如当初Android Studio取代Eclipse成为Android开发的主流开发工具一样,在可预见的未来,Kotlin必将逐步取代Java成为主流的App开发语言。
被寄予厚望的Kotlin在编程工作中给开发者带来的巨大便利毋庸置疑,大量的开发实践表明,实现同样功能的Kotlin代码往往只有对应Java代码的三分之一。并且Kotlin的语法兼容并蓄、易懂易学,只要开发者拥有任何一门高级语言的编程基础,再配合一本合适的Kotlin入门教程,短时间内即可成为Kotlin熟练开发者。正因为Kotlin是如此的简单易用,它的代码也是如此的简洁明了,所以倘若介绍Kotlin语法的教程还在长篇大论,那它一定是在夸夸其谈地“耍流氓”。Kotlin的设计理念是尽可能的简易,而不是抛出一堆令人生畏的烦琐概念,因此本书在介绍Kotlin用法的时候,也秉承了与之相符的一贯理念,即凡是能够简单处理的事情,决不拐弯抹角、拖泥带水。
本书既是一本Kotlin语法的入门教程,也是讲述Kotlin开发App的教程,一方面介绍Kotlin语言的基本语法,另一方面介绍Kotlin在安卓开发中的实际应用,可谓是结合理论、联系实战,方便读者迅速将Kotlin运用于日常的App开发工作之中,更好、更快地将学习成果展现出来,起到立竿见影的工作成效。当然,本书的侧重点在于教会读者利用Kotlin进行安卓开发工作,故而在有限的内容篇幅上有所取舍,比如服务端的Kotlin开发着墨不多,另外阐述了如何使用Kotlin实现常见的几种App开发技术,其余的App开发涉及的Kotlin技术即可触类旁通。如果读者想要了解更详细、更具体的App开发技能,可参见笔者的另一部App开发专著《Android Studio开发实战:从零基础到App上线》。
全书共有10章内容,循序渐进,可分为三大部分:第一部分即第1章,主要介绍Kotlin语言的开发环境搭建;第二部分包含第2~5章,主要介绍Kotlin的基本语法知识,包括Kotlin的变量声明、控制语句、函数定义、类与对象等;第三部分包含第6~10章,主要介绍如何使用Kotlin进行实际的App开发工作,包括如何通过Kotlin使用简单控件、如何通过Kotlin操纵复杂控件、如何通过Kotlin进行数据存储、如何通过Kotlin自定义控件、如何通过Kotlin实现网络通信等。通过本书这10章的学习,读者应该能够掌握Kotlin的大部分常用语法,并将其得心应手地运用于App开发工作中,你会发现多了一门可供选择的App开发语言是多么奇妙的事情。
从零开始学Kotlin其实指的是Kotlin零基础,并非编程零基础。在学习本书之前,读者应当掌握至少一门高级开发语言。如果没有任何编程基础就来学习Kotlin,这是不现实也是不可取的,因为短期之内各公司不会招聘只会Kotlin的程序员,而且Kotlin在Android开发中取代Java也必然是个缓慢的进程。所以学习Kotlin不提倡急于求成,但这并不意味着App开发者可以对Kotlin熟视无睹,任何一个新事物都有其发展壮大的过程,同时机会都是留给有准备的人。与其等Kotlin形成燎原之势才后知后觉地学习它,不如现在就未雨绸缪地掌握它,技术投资得越早,未来的开发收益就越大。
本书的所有代码例子都基于Android Studio 3.0和Kotlin 1.2开发,并使用API 27的SDK(Android 8.1)编译与调试通过。所有的附录源代码均可在网络上下载,具体下载方式可访问笔者的博客httpblog.csdn.netaqi00。读者也可以从以下地址下载本书源代码:
httpspan.baidu.coms1ceRZzDK4_zT-uQHqy2WFHw(注意区分数字和英文字母大小写)
如果下载有问题,请发送电子邮件至booksaga@126.com,邮件标题为“Kotlin从零到精通Android开发配书源代码”获得帮助。
读者在阅读本书时,若对书中内容有疑问,也可在该博客上留言。或者关注笔者的微信公众号“老欧说安卓”,更快更方便地阅读技术干货。
最后感谢王金柱编辑以及各位出版社同仁的热情指点和密切配合,感谢我的家人一直以来的支持,如果没有大家的鼎力协助,就没有本书的顺利完成。
欧阳燊
2018年1月