第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