內容簡介
Google已經將Kotlin列為Android開發第一開發語言。
Kotlin與
Java無縫兼容,同時
Kotlin作為一門新語言,其語法極其簡潔精練,稍微熟悉之後,開發效率立即會有明顯提升。 本書分為20章,嚴格參考Android 10官方開發文檔,全面講解利用Kotlin開發Android套用的各種技術,章節精心安排、循序漸進,內容準確、翔實、全面而又通俗易懂,絕不是術語的羅列,也絕不是不知所云的翻院凝永譯。 本書既適合Android套用開發初學者、轉向Kotlin編程的Android套用開發人員閱讀,也適合高等院校和培訓學校計算技術相關專業的師生參考。
圖書目錄
第1章Kotlin快速入門 1
1.1開發環境配置 1
1.1.1安裝JDK 1
1.1.2安裝IDE 2
1.1.3創建第一個Kotlin工程祖戲虹 3
1.1.4工程組織結構 5
1.1.5添加代碼 6
1.1.6運行程式 6
1.2大道至簡 8
1.3萬變不離其宗 10
1.4新式語法特徵 11
1.5Kotlin獨特語法 17
1.6作用域函式 23
1.6.1let( ) 24
1.6.2run( ) 24
1.6.3apply( ) 25
1.6.4also( ) 25
1.6.5with( ) 26
1.7新式語法特點總結 26
第2章Android系統簡介 27
第3章Android開發環境搭建 29
3.1下載AndroidStudio 29
3.2安裝AndroidStudio 30
3.3配置AndroidSDK 31
3.4四項原則 34
第4章第一個KotlinApp 35
4.1運行App 37
4.1.1在真實設備上調試 38
4.1.2配置虛擬機 40
4.2虛擬機加速 42
4.2.1在BIOS中開啟虛擬化記紋
支持 43
4.2.2安裝HAXM 43
4.3App的樣子 44
4.4工程裡面擔戲請甩有什麼 44
第5章UI資源與Layout 46
5.1Layout 46
5.2改動Layout 49
5.2.1添加圖像資源 52
5.2.2檔案或資料夾改名 53
5.2.3顯示自己的圖像 53
5.2.4XML小解 56
5.2.5Layout源碼解釋 57
5.3ConstraintLayout 58
5.3.1ConstraintLayout的原理 59
5.3.2子控制項在ConstraintLayout
中居左或居右達獄牛您 60
5.3.3子控制項在ConstraintLayout
中橫向居中 61
5.3.4子控制項在ConstraintLayout
中居中偏左 62
5.3.5子控制項A在子控制項B的
上面 62
5.3.6子控制項A與子控制項B左邊
對齊 63
5.3.7設定子控制項的寬和高 64
5.3.8子控制項的寬和高保持一承諒贈定
比例 65
5.4設計登錄頁面 67
5.4.1添加用戶名輸入控制項 67
5.4.2添加密碼輸入控制項 69
5.4.3添加登錄按鈕 70
5.4.4完成收工 70
5.5讓譽元訂內容滾動 72
5.5.1添加ScrollView作為最外層
容器 73
5.5.2禁止旋轉 75
5.5.3為橫屏和豎屏分別創建Layout 76
5.5.4讓內容居中 77
5.6添加新的Layout資源 77
第6章各種Layout控制項 79
6.1FrameLayout 79
6.2LinearLayout 79
6.2.1縱向LinearLayout中子控制項
橫向居中 80
6.2.2子控制項均勻分布 81
6.2.3子控制項按比例分布 81
6.2.4用LinearLayout實現登錄
界面 83
6.3GridLayout 85
6.4TableLayout 87
第7章操作控制項 89
7.1在Activity中創建界面 89
7.1.1類R 90
7.1.2類Activity 90
7.1.3四大組件 90
7.2在代碼中操作控制項 91
7.2.1獲取控制項 91
7.2.2回響View的事件 93
7.2.3添加依賴庫 93
7.2.4顯示提示 95
7.2.5完成收工 97
第8章Activity導航 98
8.1創建註冊頁面 98
8.2啟動註冊頁面 100
8.2.1修改頁面標題 100
8.2.2MainActivity源碼 101
8.3設計註冊頁面 102
8.4回響註冊按鈕進行註冊 106
8.5獲取頁面返回的數據 107
8.5.1避免常量重複出現 108
8.5.2日誌輸出 110
8.5.3將返回的數據設定到
控制項中 111
8.6ActionBar上的返回圖示 111
8.6.1原生ActionBar與MaterailDesignAction
Bar 112
8.6.2登錄頁面顯示返回圖示 112
8.6.3註冊頁面顯示返回圖示 114
8.7ScrollView與軟鍵盤 114
8.8源碼 115
8.8.1MainActivity 115
8.8.2RegisterActivity.kt 117
第9章Theme 119
第10章Fragment 121
10.1弄巧成拙的Activity 121
10.2使用Fragment 123
10.3改造登錄頁面 125
10.3.1添加layout檔案 125
10.3.2改變layout檔案的
內容 126
10.3.3添加Fragment類 126
10.3.4將Fragment放到
Activity中 130
10.3.5創建註冊Fragment 132
10.3.6顯示RegisterFragment 133
10.3.7通過AppBar控制頁面
導航 133
10.3.8實現RegisterFragment的
邏輯 134
10.3.9從LoginFragment中讀出
用戶名和密碼 136
10.3.10Fragment的生命周期 137
10.3.11Fragment狀態保存與
恢復 137
10.3.12總結 138
10.4對話框 141
10.4.1創建子類 142
10.4.2顯示對話框 143
10.4.3回響返回鍵 144
第11章選單 145
11.1添加選單資源 145
11.2重寫onCreateOptionsMenu( ) 147
11.3嵌套選單 148
11.4選單項分組 149
11.5回響選單項 150
11.6其他選單類型 151
第12章動畫 152
12.1動畫原理 152
12.2三種動畫 153
12.3視圖動畫 154
12.3.1繞著中心轉 155
12.3.2不要反向轉 155
12.3.3舉一反三 156
12.3.4動畫組 157
12.4屬性動畫 158
12.4.1旋轉動畫 158
12.4.2動畫組 159
12.5動畫資源 163
12.6Layout動畫 165
12.6.1向Layout控制項添加
子控制項 165
12.6.2ViewGroup 167
12.6.3設定排版動畫 167
12.7轉場動畫 169
12.7.1使用默認轉場動畫 169
12.7.2自定義轉場動畫 169
第13章自定義控制項 174
13.1創建一個CustomView 175
13.2CustomView類 176
13.2.1構造方法 176
13.2.2onDraw( )方法 177
13.2.3init( )方法 179
13.2.4自定義屬性 182
13.2.5作畫 184
13.3創建圓形圖像控制項 185
13.3.1將Drawable轉成
Bitmap 188
13.3.2變換矩陣 189
13.3.3自定義屬性的改動 190
13.3.4類的所有代碼 191
第14章RecyclerView 197
14.1基本用法 197
14.2顯示多條簡單數據 198
14.2.1添加新頁面 198
14.2.2創建Adapter子類 200
14.2.3設定RecyclerView 202
14.2.4用集合保存數據 203
14.3讓子控制項複雜起來 204
14.3.1創建行Layout資源 204
14.3.2套用條目Layout資源 206
14.3.3明顯區分每一行 207
14.3.4使用音樂信息類 209
14.4增刪改 210
14.4.1增加一條數據 210
14.4.2其他操作 212
14.5局部刷新 212
14.6回響條目選擇 213
14.7顯示不同類型的行 214
14.7.1添加新條目數據類 214
14.7.2添加條目Layout 215
14.7.3創建新的ViewHolder
類 216
14.7.4區分不同的ViewType 216
第15章模仿QQApp界面 218
15.1創建新的Android項目 218
15.2設計登錄頁面 218
15.2.1創建登錄Fragment 219
15.2.2設計登錄界面 220
15.2.3UI代碼 221
15.2.4顯示登錄歷史 224
15.2.5設計歷史選單項 228
15.2.6實現顯示歷史的代碼 229
15.2.7selector資源 229
15.2.8layer_list資源 230
15.2.9定製控制項背景 231
15.2.10動畫顯示選單 231
15.2.11讓選單消失 233
15.2.12回響選中選單項 234
15.3QQ主頁面設計 235
15.3.1設定導航欄 237
15.3.2設定Tab欄 239
15.3.3改變TabItem圖示 241
15.3.4為ViewPager添加
內容 242
15.3.5ViewPager與TabLayout
聯動 245
15.3.6使用SpannableString顯示
圖像 247
15.3.7禁止ViewPager滑動
翻頁 251
15.3.8創建“訊息”頁 252
15.3.9顯示氣泡選單 258
15.3.10抽屜效果 271
15.3.11創建“聯繫人”頁 286
15.3.12創建“動態”頁 303
15.3.13實現搜尋功能 304
第16章實現聊天界面 313
16.1原理分析 313
16.2創建聊天Activity 313
16.2.1activity_chat.xml 313
16.2.2類ChatActivity 316
16.2.3顯示訊息的Layout 318
16.3啟動ChatActivity 320
16.4模擬聊天 321
第17章多執行緒 323
17.1執行緒與進程的概念 323
17.2創建執行緒 324
17.3創建執行緒的另一種方式 325
17.4多個執行緒操作同一個對象 326
17.5單執行緒中異步執行 329
17.6多執行緒間同步執行 330
17.7在其他執行緒中操作界面 330
17.8HandlerThread 333
17.9執行緒的退出 333
第18章網路通信 336
18.1網路基礎知識 336
18.1.1IP位址與域名 336
18.1.2TCP與UDP 337
18.1.3HTTP協定 337
18.2AndroidHTTP通信 338
18.3使用“異步任務” 341
18.3.1定義異步任務類 341
18.3.2使用異步任務類 342
18.3.3完善異步任務類 344
18.3.4異步任務的退出 349
18.4使用OkHttp進行網路通信 351
18.4.1使用OkHttp下載圖像 352
18.4.2創建Web服務端 354
18.4.3使用OkHttp下載數據 355
18.4.4JSON轉對象 357
18.4.5使用OkHttp上傳檔案 358
18.5使用Retrofit進行網路通信 360
18.5.1加入Retrofit的依賴項 360
18.5.2用Retrofit下載文本 361
18.5.3用Retrofit下載圖像 363
18.5.4用Retrofit上傳圖像 364
第19章異步調用庫RxJava 366
19.1小試牛刀 366
19.2精簡傳送代碼 369
19.3精簡接收代碼 370
19.4map與flatmap 371
19.5並行map 373
19.6RxJava與Retrofit合體 374
19.7RxJavaRetrofit合體並行執行 376
19.8RxJava與Activity的配合 377
第20章實現聊天功能 378
20.1添加註冊功能 378
20.1.1創建註冊Activity 378
20.1.2設計註冊頁面 379
20.1.3顯示BottomSheet 381
20.1.4拍照 384
20.1.5提交註冊信息 392
20.2改進登錄功能 399
20.2.1創建Retrofit相關實例 399
20.2.2添加Fragment回調
接口 400
20.2.3發出登錄請求 401
20.2.4保存自己的信息 403
20.2.5防止按鈕重複單擊 403
20.2.6顯示進度條 404
20.3獲取聯繫人 406
20.3.1修改Retrofit接口 407
20.3.2使用RxJava定時器 407
20.3.3添加Fragment回調
接口 408
20.3.4獲取並顯示聯繫人 408
20.3.5出錯重試 410
20.3.6停止網路連線 411
20.4發出聊天訊息 413
20.4.1定義承載訊息的類 413
20.4.2在接口中添加方法 414
20.4.3在ChatActivity中初始化Retrofit 414
20.4.4上傳訊息 415
20.4.5失敗重傳 416
20.5獲取聊天訊息 417
20.5.1為ChatService增加
方法 417
20.5.2發出請求 417
作者簡介
牛搞,軟體開發從業15年編程實戰經驗,流媒體技術專家,高性能伺服器專家。CSDN知名博主。現為IOS、Adroid、C 高級培訓講師。著有圖書《Android 9編程通俗演義》。
5.2.5Layout源碼解釋 57
5.3ConstraintLayout 58
5.3.1ConstraintLayout的原理 59
5.3.2子控制項在ConstraintLayout
中居左或居右 60
5.3.3子控制項在ConstraintLayout
中橫向居中 61
5.3.4子控制項在ConstraintLayout
中居中偏左 62
5.3.5子控制項A在子控制項B的
上面 62
5.3.6子控制項A與子控制項B左邊
對齊 63
5.3.7設定子控制項的寬和高 64
5.3.8子控制項的寬和高保持一定
比例 65
5.4設計登錄頁面 67
5.4.1添加用戶名輸入控制項 67
5.4.2添加密碼輸入控制項 69
5.4.3添加登錄按鈕 70
5.4.4完成收工 70
5.5讓內容滾動 72
5.5.1添加ScrollView作為最外層
容器 73
5.5.2禁止旋轉 75
5.5.3為橫屏和豎屏分別創建Layout 76
5.5.4讓內容居中 77
5.6添加新的Layout資源 77
第6章各種Layout控制項 79
6.1FrameLayout 79
6.2LinearLayout 79
6.2.1縱向LinearLayout中子控制項
橫向居中 80
6.2.2子控制項均勻分布 81
6.2.3子控制項按比例分布 81
6.2.4用LinearLayout實現登錄
界面 83
6.3GridLayout 85
6.4TableLayout 87
第7章操作控制項 89
7.1在Activity中創建界面 89
7.1.1類R 90
7.1.2類Activity 90
7.1.3四大組件 90
7.2在代碼中操作控制項 91
7.2.1獲取控制項 91
7.2.2回響View的事件 93
7.2.3添加依賴庫 93
7.2.4顯示提示 95
7.2.5完成收工 97
第8章Activity導航 98
8.1創建註冊頁面 98
8.2啟動註冊頁面 100
8.2.1修改頁面標題 100
8.2.2MainActivity源碼 101
8.3設計註冊頁面 102
8.4回響註冊按鈕進行註冊 106
8.5獲取頁面返回的數據 107
8.5.1避免常量重複出現 108
8.5.2日誌輸出 110
8.5.3將返回的數據設定到
控制項中 111
8.6ActionBar上的返回圖示 111
8.6.1原生ActionBar與MaterailDesignAction
Bar 112
8.6.2登錄頁面顯示返回圖示 112
8.6.3註冊頁面顯示返回圖示 114
8.7ScrollView與軟鍵盤 114
8.8源碼 115
8.8.1MainActivity 115
8.8.2RegisterActivity.kt 117
第9章Theme 119
第10章Fragment 121
10.1弄巧成拙的Activity 121
10.2使用Fragment 123
10.3改造登錄頁面 125
10.3.1添加layout檔案 125
10.3.2改變layout檔案的
內容 126
10.3.3添加Fragment類 126
10.3.4將Fragment放到
Activity中 130
10.3.5創建註冊Fragment 132
10.3.6顯示RegisterFragment 133
10.3.7通過AppBar控制頁面
導航 133
10.3.8實現RegisterFragment的
邏輯 134
10.3.9從LoginFragment中讀出
用戶名和密碼 136
10.3.10Fragment的生命周期 137
10.3.11Fragment狀態保存與
恢復 137
10.3.12總結 138
10.4對話框 141
10.4.1創建子類 142
10.4.2顯示對話框 143
10.4.3回響返回鍵 144
第11章選單 145
11.1添加選單資源 145
11.2重寫onCreateOptionsMenu( ) 147
11.3嵌套選單 148
14.5局部刷新 212
14.6回響條目選擇 213
14.7顯示不同類型的行 214
14.7.1添加新條目數據類 214
14.7.2添加條目Layout 215
14.7.3創建新的ViewHolder
類 216
14.7.4區分不同的ViewType 216
第15章模仿QQApp界面 218
15.1創建新的Android項目 218
15.2設計登錄頁面 218
15.2.1創建登錄Fragment 219
15.2.2設計登錄界面 220
15.2.3UI代碼 221
15.2.4顯示登錄歷史 224
15.2.5設計歷史選單項 228
15.2.6實現顯示歷史的代碼 229
15.2.7selector資源 229
15.2.8layer_list資源 230
15.2.9定製控制項背景 231
15.2.10動畫顯示選單 231
15.2.11讓選單消失 233
15.2.12回響選中選單項 234
15.3QQ主頁面設計 235
15.3.1設定導航欄 237
15.3.2設定Tab欄 239
15.3.3改變TabItem圖示 241
15.3.4為ViewPager添加
內容 242
15.3.5ViewPager與TabLayout
聯動 245
15.3.6使用SpannableString顯示
圖像 247
15.3.7禁止ViewPager滑動
翻頁 251
15.3.8創建“訊息”頁 252
15.3.9顯示氣泡選單 258
15.3.10抽屜效果 271
15.3.11創建“聯繫人”頁 286
15.3.12創建“動態”頁 303
15.3.13實現搜尋功能 304
第16章實現聊天界面 313
16.1原理分析 313
16.2創建聊天Activity 313
16.2.1activity_chat.xml 313
16.2.2類ChatActivity 316
16.2.3顯示訊息的Layout 318
16.3啟動ChatActivity 320
16.4模擬聊天 321
第17章多執行緒 323
17.1執行緒與進程的概念 323
17.2創建執行緒 324
17.3創建執行緒的另一種方式 325
17.4多個執行緒操作同一個對象 326
17.5單執行緒中異步執行 329
17.6多執行緒間同步執行 330
17.7在其他執行緒中操作界面 330
17.8HandlerThread 333
17.9執行緒的退出 333
第18章網路通信 336
18.1網路基礎知識 336
18.1.1IP位址與域名 336
18.1.2TCP與UDP 337
18.1.3HTTP協定 337
18.2AndroidHTTP通信 338
18.3使用“異步任務” 341
18.3.1定義異步任務類 341
18.3.2使用異步任務類 342
18.3.3完善異步任務類 344
18.3.4異步任務的退出 349
18.4使用OkHttp進行網路通信 351
18.4.1使用OkHttp下載圖像 352
18.4.2創建Web服務端 354
18.4.3使用OkHttp下載數據 355
18.4.4JSON轉對象 357
18.4.5使用OkHttp上傳檔案 358
18.5使用Retrofit進行網路通信 360
18.5.1加入Retrofit的依賴項 360
18.5.2用Retrofit下載文本 361
18.5.3用Retrofit下載圖像 363
18.5.4用Retrofit上傳圖像 364
第19章異步調用庫RxJava 366
19.1小試牛刀 366
19.2精簡傳送代碼 369
19.3精簡接收代碼 370
19.4map與flatmap 371
19.5並行map 373
19.6RxJava與Retrofit合體 374
19.7RxJavaRetrofit合體並行執行 376
19.8RxJava與Activity的配合 377
第20章實現聊天功能 378
20.1添加註冊功能 378
20.1.1創建註冊Activity 378
20.1.2設計註冊頁面 379
20.1.3顯示BottomSheet 381
20.1.4拍照 384
20.1.5提交註冊信息 392
20.2改進登錄功能 399
20.2.1創建Retrofit相關實例 399
20.2.2添加Fragment回調
接口 400
20.2.3發出登錄請求 401
20.2.4保存自己的信息 403
20.2.5防止按鈕重複單擊 403
20.2.6顯示進度條 404
20.3獲取聯繫人 406
20.3.1修改Retrofit接口 407
20.3.2使用RxJava定時器 407
20.3.3添加Fragment回調
接口 408
20.3.4獲取並顯示聯繫人 408
20.3.5出錯重試 410
20.3.6停止網路連線 411
20.4發出聊天訊息 413
20.4.1定義承載訊息的類 413
20.4.2在接口中添加方法 414
20.4.3在ChatActivity中初始化Retrofit 414
20.4.4上傳訊息 415
20.4.5失敗重傳 416
20.5獲取聊天訊息 417
20.5.1為ChatService增加
方法 417
20.5.2發出請求 417
作者簡介
牛搞,軟體開發從業15年編程實戰經驗,流媒體技術專家,高性能伺服器專家。CSDN知名博主。現為IOS、Adroid、C 高級培訓講師。著有圖書《Android 9編程通俗演義》。