Kotlin 移動應用開發技術

白喆

  • 出版商: 電子工業
  • 出版日期: 2021-07-01
  • 定價: $648
  • 售價: 8.5$551
  • 語言: 簡體中文
  • 頁數: 532
  • 裝訂: 平裝
  • ISBN: 7121414465
  • ISBN-13: 9787121414466
  • 相關分類: JVM 語言
  • 下單後立即進貨 (約4週~6週)

買這商品的人也買了...

商品描述

本書基於Kotlin語言對Android移動應用程序開發的知識點進行總結,對常用的SDK進行分析,並通過實例工程進行演示。本書共15章,內容包括Android的開發環境、工程創建、工程結構、Kotlin基礎語法、控件與佈局、活動與碎片、後台服務與廣播、數據存儲與共享、多媒體與傳感器、HTTP網絡通信、快速開發套件、“粉色辣椒”開發流程等。針對使用技巧、註意事項和相關概念,本書還提供了相應的“提示”。

作者簡介

白喆,瀋陽師範大學新聞與傳播學院教師,多次獲得第七屆全國信息技術應用水平大賽*佳指導教師獎,第四屆全國大學生廣告藝術大賽優秀指導教師獎等。

目錄大綱

第1章 Android的基礎知識 1
1.1 Android與Andy Rubin 1
1.2 Android的開發環境 1
1.2.1 Android Studio的下載 1
1.2.2 Android Studio的安裝 2
1.2.3 Android SDK的下載安裝 2
1.2.4 Android Studio界面 4
1.2.5 Gradle更新 7
1.2.6 重構工程 9
1.3 創建Android工程 9
1.3.1 Android工程的新建命令 9
1.3.2 Android工程的創建嚮導 10
1.3.3 虛擬設備運行工程 12
1.3.4 物理設備運行工程 15
1.3.5 生成簽名的APK文件 15
1.4 Android的工程結構 17
1.4.1 Project視圖 17
1.4.2 AndroidManifest.xml文件 18
1.4.3 build.gradle文件 19
1.4.4 res文件夾 20

第2章 Kotlin基礎 21
2.1 簡介 21
2.2 變量 21
2.2.1 變量的命名規則 21
2.2.2 變量的命名方法 21
2.2.3 變量的聲明 22
2.3 數據類型 22
2.3.1 基本數據類型 22
2.3.2 基本數據類型的自動轉換 23
2.3.3 基本數據類型的強制轉換 23
2.3.4 引用數據類型 24
2.4 運算符和位運算 24
2.4.1 算術運算符 24
2.4.2 關係運算符 26
2.4.3 邏輯運算符 27
2.4.4 賦值運算符 28
2.4.5 運算符優先級 29
2.5 字符串 29
2.5.1 字符串字面量 29
2.5.2 String類 30
2.5.3 StringBuffer類和
StringBuilder類 33
2.6 分支語句 35
2.6.1 if語句 35
2.6.2 if…else語句 36
2.6.3 if…else if…else語句 37
2.6.4 when語句 38
2.7 循環語句 39
2.7.1 while語句 39
2.7.2 do…while語句 40
2.7.3 for語句 41
2.7.4 repeat語句 42
2.7.5 break語句 42
2.7.6 continue語句 43
2.8 數組 44
2.8.1 創建元素未初始化的數組 44
2.8.2 創建元素初始化的數組 45
2.8.3 空數組 46
2.8.4 二維數組 47
2.9 函數和Lambda表達式 48
2.9.1 函數和高階函數 48
2.9.2 匿名函數 50

2.9.3 Lambda表達式的基本形式 51
2.9.4 Lambda表達式參數的
省略形式 53
2.9.5 let、also、apply、with和
run函數 53

第3章 Kotlin的面向對象基礎 56
3.1 類 56
3.1.1 類的聲明 56
3.1.2 創建類的實例 57
3.1.3 屬性的get()和set()方法 61
3.1.4 擴展屬性和擴展方法 64
3.1.5 自動生成KDoc文檔 66
3.1.6 繼承 69
3.2 重寫與重載 71
3.3 抽像類和抽象方法 73
3.4 包 74
3.5 封裝和訪問控制符 75
3.6 接口 78
3.7 委託 80
3.7.1 類的委託 80
3.7.2 變量的委託 82
3.8 屬性的延遲初始化 83
3.8.1 lateinit 83
3.8.2 by lazy 83

第4章 Kotlin的面向對象進階 85
4.1 數據類 85
4.2 密封類 86
4.3 對像類 87
4.4 伴生對象 88
4.5 枚舉 89
4.5.1 枚舉基礎用法 89
4.5.2 枚舉進階用法 91
4.6 集合 91
4.6.1 Set集合 91
4.6.2 List集合 93
4.6.3 Map類 94
4.7 泛型 96
4.7.1 泛型類 96
4.7.2 泛型接口 98
4.7.3 泛型方法 99
4.8 異常處理 100
4.8.1 異常處理基礎用法 101
4.8.2 異常處理進階用法 103
4.8.3 自定義異常處理用法 104
4.9 多線程 106
4.9.1 Thread類 106
4.9.2 Runnable接口 109
4.9.3 Callable接口 111
4.9.4 Synchronized註解和
synchronized代碼塊 112
4.9.5 volatile註解 115
4.10 協程 116
4.10.1 添加依賴庫 116
4.10.2 協程作用域 117
4.10.3 啟動協程 118
4.10.4 掛起協程 124

第5章 Android的基礎控件 126
5.1 控件基礎 126
5.1.1 控件的創建方式 126
5.1.2 View類 128
5.1.3 UI控件的常用單位 129
5.2 文本視圖 130
5.2.1 TextView控件 130
5.2.2 實例工程:顯示文本 131
5.3 輸入框 133
5.3.1 EditText控件 133
5.3.2 實例工程:輸入發送信息 134
5.4 按鈕 136
5.4.1 Button控件 136
5.4.2 實例工程:單擊按鈕獲取
系統時間 136
5.5 圖像視圖 138
5.5.1 ImageView控件 138
5.5.2 實例工程:顯示圖像 138
5.6 圖像按鈕 140
5.6.1 ImageButton控件 140
5.6.2 實例工程:提示廣播信息
狀態的圖像按鈕 140
5.7 單選按鈕 142
5.7.1 RadioButton控件 142
5.7.2 實例工程:選擇性別的
單選框 143
5.8 複選框 145
5.8.1 Checkbox控件 145
5.8.2 實例工程:興趣愛好的
複選框 146
5.9 開關按鈕 148
5.9.1 Switch控件 148
5.9.2 實例工程:房間燈的
開關按鈕 149
5.10 提示信息 150
5.10.1 Toast控件 150
5.10.2 實例工程:不同位置顯示的
提示信息 151
5.11 對話框 153
5.11.1 AlertDialog控件 153
5.11.2 實例工程:默認對話框和
自定義對話框 154
5.12 日期選擇器 157
5.12.1 DatePicker控件 157
5.12.2 實例工程:設置日期的
日期選擇器 157
5.13 時間選擇器 159
5.13.1 TimePicker控件 159
5.13.2 實例工程:設置時間的
時間選擇器 159
5.14 滾動條視圖 161
5.14.1 ScrollView控件 161
5.14.2 實例工程:滾動顯示視圖 162
5.15 通知 164
5.15.1 Notification控件 164
5.15.2 實例工程:彈出式通知和
自定義視圖通知 167

第6章 Android的佈局組件 170
6.1 線性佈局 170
6.1.1 LinearLayout組件 170
6.1.2 實例工程:動態視圖的
線性佈局 171
6.2 相對佈局 172
6.2.1 RelativeLayout組件 172
6.2.2 實例工程:顯示方位的
相對佈局 173
6.3 表格佈局 175
6.3.1 TableLayout組件 175
6.3.2 實例工程:登錄界面的
表格視圖 175
6.4 網格佈局 177
6.4.1 GridLayout組件 177
6.4.2 實例工程:模仿計算器界面的
網格佈局 177
6.5 幀佈局 179
6.5.1 FrameLayout組件 179
6.5.2 實例工程:分層顯示圖像的
幀佈局 179
6.6 約束佈局 180
6.6.1 ConstraintLayout組件 180
6.6.2 實例工程:模仿朋友圈頂部的
約束佈局 181

第7章 Android的進階控件與
適配綁定 183
7.1 數據適配原理 183
7.2 列表視圖 183
7.2.1 ListView控件 183

7.2.2 實例工程:簡單數據的
列表視圖 184
7.2.3 實例工程:帶緩存的
自定義視圖列表 186
7.3 網格視圖 190
7.3.1 GridView控件 190
7.3.2 實例工程:顯示商品類別的
網格視圖 190
7.4 懸浮框 194
7.4.1 PopupWindow控件 194
7.4.2 實例工程:單擊按鈕顯示
自定義懸浮框 194
7.5 翻轉視圖 199
7.5.1 ViewFlipper控件 199
7.5.2 實例工程:輪流顯示圖像的
翻轉視圖 200
7.6 分頁視圖 202
7.6.1 ViewPager控件 202
7.6.2 實例工程:歡迎引導頁 203
7.7 視圖綁定 208
7.7.1 ViewBinding 208
7.7.2 實例工程:使用視圖綁定
改造歡迎引導頁 209
7.8 數據綁定 210
7.8.1 DataBinding 210
7.8.2 BaseObservable類 211
7.8.3 ObservableField類 211
7.8.4 實例工程:使用數據綁定
改造歡迎引導頁 211

第8章 Android的基本程序單元 216
8.1 活動 216
8.1.1 Activity組件 216
8.1.2 Activity的創建和刪除 218
8.1.3 Activity的啟動和關閉 219
8.1.4 Activity的生命週期 222
8.1.5 Activity的啟動模式 226
8.1.6 實例工程:Activity的
數據傳遞 231
8.2 碎片 234
8.2.1 Fragment組件 234
8.2.2 Fragment的生命週期 236
8.2.3 實例工程:導航分頁的
主界面 237

第9章 Android的後台服務與廣播 241
9.1 服務 241
9.1.1 Service組件 241
9.1.2 Service的生命週期 242
9.1.3 實例工程:Service的
開啟和停止 243
9.1.4 實例工程:Service的
綁定和數據傳遞 245
9.1.5 實例工程:Service顯示
Notification 250
9.2 廣播接收器 251
9.2.1 BroadcastReceiver組件 251
9.2.2 接收廣播 253
9.2.3 實例工程:顯式和隱式
接收廣播 253
9.2.4 發送廣播 257
9.2.5 實例工程:發送標準廣播和
有序廣播 257

第10章 Android的數據存儲與共享 260
10.1 共享偏好設置 260
10.1.1 SharedPreferences組件 260
10.1.2 實例工程:用戶登錄 262
10.2 輕量級數據庫 263
10.2.1 SQLite的字段類型 263
10.2.2 SQLite組件 264
10.2.3 實例工程:自定義通訊錄 267
10.3 內容提供者 270
10.3.1 URI 270
10.3.2 數據交換原理 270
10.3.3 ContentProvider組件 271
10.3.4 實例工程:自定義內容
提供者 273
10.3.5 實例工程:訪問和修改
系統通訊錄數據 279
10.4 JavaScript對象表示法 285
10.4.1 JSON的數據結構 286
10.4.2 JSONObject類 287
10.4.3 實例工程:合成和
解析JSON數據 288

第11章 Android的多媒體與傳感器 291
11.1 系統相機和相冊 291
11.1.1 實例工程:拍照、選取和
顯示圖片 291
11.1.2 實例工程:錄製、選取和
播放視頻 298
11.2 拍攝照片和錄製視頻 299
11.2.1 Camera2組件 299
11.2.2 ImageReader類 305
11.2.3 MediaRecorder類 306
11.2.4 實例工程:使用Camera2
類拍攝照片 309
11.2.5 實例工程:使用Camera2類
錄製視頻 317
11.3 錄製音頻 324
11.3.1 AudioRecord類 324
11.3.2 AudioTrack類 325
11.3.3 實例工程:使用AudioRecord類
錄音 326
11.3.4 實例工程:使用MediaRecorder類
錄音 329
11.4 傳感器 331
11.4.1 Sensor組件 331
11.4.2 運動類傳感器 332
11.4.3 實例工程:搖一搖比大小 333
11.4.4 位置類傳感器 335
11.4.5 實例工程:指南針 336
11.4.6 環境類傳感器 338
11.4.7 實例工程:光照計和氣壓計 339
11.5 位置服務 340
11.5.1 Location組件 340
11.5.2 實例工程:獲取經緯度坐標 342

第12章 Android的HTTP網絡通信 345
12.1 HttpURLConnection類 345
12.2 實例工程:加載網絡
圖片(帶緩存) 346
12.3 實例工程:發布動態
(POST方式) 351
12.4 實例工程:動態列表
(GET方式) 355

第13章 Android的快速開發套件 359
13.1 Jetpack簡介 359
13.2 回收視圖 360
13.2.1 RecyclerView控件 360
13.2.2 實例工程:瀑布流
動態列表 363
13.3 滑動刷新佈局 366
13.3.1 SwipeRefreshLayout組件 366
13.3.2 實例工程:下拉刷新和
上拉加載的動態列表 366
13.4 生物特徵認證 373
13.4.1 Biometric組件 373
13.4.2 實例工程:指紋支付 374
13.5 感知生命週期 377
13.5.1 Lifecycle組件 377
13.5.2 實例工程:改造使用
Camera2類錄製視頻 380
13.6 視圖模型 382
13.6.1 ViewModel組件 382
13.6.2 實例工程:足球賽記分器 383
13.7 實時數據 387
13.7.1 LiveData組件 387
13.7.2 實例工程:聯想搜索關鍵字 389

第14章 “粉色辣椒”開發流程 393
14.1 項目介紹 393
14.1.1 市場分析 393
14.1.2 產品定位 393
14.1.3 產品展望 393
14.2 開發流程 394
14.3 開放平臺介紹 394
14.3.1 客戶端框架結構 394
14.3.2 開發者賬號 394
14.3.3 基礎工程 396
14.3.4 設置服務器端 397
14.3.5 設置開發者賬號和
開發序列號 397
14.4 啟動圖標 398
14.5 數據模型 399
14.5.1 開發者數據類 399
14.5.2 用戶數據類 400
14.5.3 動態數據類 401
14.5.4 動態回複數據類 403
14.5.5 關註數據類 403
14.5.6 消息數據類 403
14.6 歡迎模塊 404
14.7 註冊模塊組 404
14.7.1 註冊賬號模塊 405
14.7.2 找回密碼模塊 416
14.7.3 登錄模塊 418
14.8 首頁模塊組1 421
14.8.1 首頁模塊 421
14.8.2 附近模塊 423
14.8.3 動態列表模塊 425
14.8.4 關註模塊 436
14.9 發布動態模塊 437
14.9.1 發布動態的服務器端
接口頁面 437
14.9.2 過濾類 438
14.9.3 發布動態的Activity 439
14.10 MVVM模式 443
14.10.1 邏輯關係 444
14.10.2 優勢和劣勢 444
14.11 首頁模塊組2 444
14.11.1 偶遇模塊 444
14.11.2 提醒模塊 469
14.11.3 自己模塊 482
14.12 回複動態模塊 491
14.12.1 發布回復的服務器端
接口頁面 491
14.12.2 發布回復的視圖模型類 492
14.12.3 發布回復的佈局 493
14.12.4 發布回復的Activity類 493
14.13 關註和粉絲列表模塊 495
14.13.1 關註列表和粉絲列表的
服務器端接口頁面 495
14.13.2 關註列表的視圖模型類 496
14.13.3 關註或粉絲列表的
子視圖緩存類 497
14.13.4 關註或粉絲列表的
Fragment類 498
14.13.5 關註列表的Activity類 499
14.13.6 粉絲列表的Activity類 499
14.14 搜索動態模塊 499
14.14.1 搜索關鍵字提示的
服務器端接口 499
14.14.2 搜索動態的服務器端
接口頁面 501
14.14.3 關鍵字提示列表的
適配器類 501
14.14.4 搜索動態的視圖模型類 502
14.14.5 搜索動態的Activity類 502
14.15 私信模塊 505
14.15.1 發送私信的服務器端
接口頁面 505
14.15.2 發送私信的視圖模型類 506
14.15.3 發送私信的Activity類 507
14.15.4 私信箱的Activity類 507
14.16 設置模塊組 509
14.16.1 設置的Activity類 509
14.16.2 設置頭像的服務器端
接口頁面 510
14.16.3 設置頭像的視圖模型類 510
14.16.4 設置頭像的Activity類 511
14.16.5 重置密碼的服務器端
接口頁面 512
14.16.6 重置密碼的視圖模型類 512
14.16.7 重置密碼的Activity類 513
14.16.8 提交驗證身份證的
服務器端接口頁面 513
14.16.9 驗證身份證的視圖模型類 514
14.16.10 驗證身份證的Activity類 515
14.17 應用程序發布 516
14.17.1 生成APK文件 516
14.17.2 發佈到網站或應用市場 519
參考文獻 520