本书分为3篇:*篇,基础语法篇,主要讲解*基础的面向过程式语法;第二篇,面向对象篇,详解Kotlin的面向对象;第三篇,Kotlin 安卓开发篇,主要讲解开发工具Android Studio的使用、UI常用组件和Kotlin开发框架Anko的应用,且以两个小实战展示Kotlin在安卓平台的实际开发能力。
前 言
在开始本书之前,简单介绍Kotlin的历史与发展方向。2017年5月,谷歌2017年度I/O大会上除了宣布热门的人工智能技术,还宣布把Kotlin作为安卓开发的首选语言,以及逐步取代历史悠久的Java语言在安卓开发中的地位。
除了谷歌与Java版权方Oracle有官司影响安卓发展的这个因素以外,Kotlin这门课程从发明到发展,已经有6年的历史,此次算是地位扶正、一朝登顶,很多Kotlin爱好者把它称作今年最好的消息,对于业界,以及要入行的广大新手来说,很显然也是一次重大的机会。
作为一个关注移动开发领域的开发者及培训讲师,我也不甘人后,第一时间看完了英文版的官方教程并于第一天在51CTO、腾讯课堂上推出了一个简单的实战课程,体验过后才知道Kotlin是多么方便和畅快。观众也有非常热烈的讨论和回馈,学习气氛非常浓厚。可见这门新语言的热度之高和市场之大。
Kotlin这种地位的取得与Kotlin本身的各种现代化编程语言特性分不开,像苹果的Swift语言一样,简洁、安全、现代是其卖点,再加上无缝兼容现有的Java代码,有眼光的安卓开发者早就运用多年,所以此种正名也是众望所归,谷歌大会上获取掌声最大也证明了对Kotlin的广泛认可。
很荣幸应电子工业出版社之邀编写本书,本打算只编写语法部分,可后来觉得实在是干货太少,于是加入Kotlin与安卓开发的部分,并随后附上一个小型实战App并加上Kotlin服务端有关的内容,以便将内容向全栈方向推进,各位读者可能觉得买了也更有价值。追加部分的内容由两位优秀的在校大学生王卓和沈家瑜及他们的小伙伴们大力支持和编写。
本书分为3篇:第一篇,基础语法篇,主要讲解最基础的面向过程式语法;第二篇,面向对象篇,详解Kotlin的面向对象;第三篇,Kotlin 安卓开发篇,主要讲解开发工具Android Studio的使用、UI常用组件和Kotlin开发框架Anko的应用,且以两个小实战展示Kotlin在安卓平台的实际开发能力。如本书阅读中遇到问题,您可进群:18247468与众多开发者沟通或者下载相关资料。
张云波,昵称小波,网络知名讲师,《小波说雨燕》系列视频作者,目前致力于移动开发培训领域。曾在IBM/HP/神州数码/埃森哲/SONY/SAP等公司从事商业软件开发相关工作,有海外工作经验,英语日语熟练。 参与项目:iCard信用卡/国家电网&上海电力互通3期/文雅科BI产品综合测试/Charment II/日本某音乐APP/夏普Sharp无锡液晶屏QS-I/淘宝某第三方平台分销APP/葛兰素史克-新药销售代表用APP/辉瑞新药推广APP 。
目 录
第1篇 基础语法篇1
第1章 Kotlin初入门2
1.1 练习环境配置2
1.2 Hello World程序9
1.3 常量与变量11
第2章 Kotlin基础15
2.1 整数型和类型推断15
2.2 浮点型(小数)17
2.3 类型安全18
2.4 布尔型18
2.5 元组20
2.6 可空类型(nullable)20
2.7 基础操作符21
2.8 package和import25
2.9 异常处理和类初始化26
2.10 引用相等和结构相等27
2.11 区间(Range)28
2.12 控制流作为表达式29
2.13 函数返回34
2.14 类型层级34
2.15 循环35
第3章 控制流37
3.1 二元判断37
3.2 循环38
3.3 多元判断44
第4章 字符串和字符46
4.1 字符串46
4.2 字符52
第5章 函数54
5.1 函数定义和使用54
5.2 函数的作用范围56
5.3 命名参数和默认参数60
5.4 函数操作符63
5.5 函数扩展68
5.6 函数字面量71
5.7 尾递归函数72
5.8 标准库函数73
5.9 泛型函数77
第6章 Lambda和高阶函数79
6.1 Lambda表达式79
6.2 高阶函数81
第7章 集合类型84
7.1 Array数组84
7.2 MutableList可变列表92
7.3 Set94
7.4 MutableSet96
7.5 Java中的各种集合97
7.6 Map97
7.7 MutableMap102
7.8 集合类型共性详解104
第2篇 面向对象篇113
第8章 初识对象114
8.1 万物皆对象114
8.2 用Kotlin描述对象115
8.3 愉快的构造121
8.4 属性128
第9章 类的进阶136
9.1 继承136
9.2 抽象类,重写和重载144
9.3 接口146
9.4 修饰符152
9.5 扩展160
第10章 多彩的类173
10.1 数据类173
10.2 密封类183
10.3 泛型186
10.4 嵌套类195
10.5 枚举类201
10.6 对象213
10.7 委托223
第11章 关于对象的小细节241
11.1 类型检查与类型转换241
11.2 异常错误处理246
11.3 结构相等与引用相等254
11.4 this表达式257
11.5 类型别名263
第12章 面向对象高级部分268
12.1 操作符重载268
12.2 反射282
12.3 维护初步288
第3篇 Kotlin安卓开发篇
第13章 UI界面基础296
13.1 Android UI简介296
13.2 基类View和容器ViewGroup296
13.3 Anko简介302
13.4 Anko Layout DSL302
13.5 基本布局315
13.6 基础UI组件331
13.7 进阶UI组件353
第14章 Activity与Fragment367
14.1 Activity367
14.2 Fragment375
第15章 Service与Broadcast Receiver380
15.1 Service380
15.2 Android广播接收器(Broadcast Receivers)396
第16章 Kotlin多线程编程404
16.1 进程?线程?404
16.2 Android开发中多线程的必要性405
16.3 Kotlin中的Executors414
第17章 Android数据存储416
17.1 SharePreferences416
17.2 文件存储数据418
17.3 SQLite数据库存储数据421
17.4 ContentProvider存储数据430
17.5 网络存储数据433
第18章 Kotlin网络编程434
18.1 基于TCP/IP 协议栈的网络编程434
18.2 基于HTTP的网络通信436
18.3 HTTPConnection438
18.4 HTTP库Fuel439
18.5 数据交换格式-JSON简介443
18.6 Demo:IP查询445
18.7 WebView450
第19章 Demo:天气462
19.1 架构设计462
19.2 分析数据源462
19.3 Android 开发471
第20章 Demo:网易云音乐500
20.1 项目简介500
20.2 服务器端部署500
20.3 Android端开发501
20.4 用户登录界面与功能505
20.5 主界面510
20.6 Rank排行榜511
20.7 Rank子页面520
20.8 播放页524
20.9 私人FM536
20.10 个人页面542