Android進階之光

Android進階之光

《Android進階之光》 一書作者劉望舒,電子工業出版社2017年7月出版

內容提要

《Android進階之光》是一本Android進階類書籍,書中各知識點由淺入深、環環相扣,最終這些知識點形成了一個體系結構。《Android進階之光》共分為11章。第1章介紹Android 5.0到Android 7.0的新特性。第2章介紹Material Design。第3章介紹View體系,包括View的事件分發、工作流程、自定義View等知識點。第4章介紹多執行緒的知識。第5章介紹網路編程與網路框架的知識。第6章介紹常用的設計模式。第7章介紹事件匯流排。第8到第10章介紹架構設計所需要的知識點。第11章簡單介紹Android系統框架與MediaPlayer框架。

《Android進階之光》詳細並深入講解Android開發者必備的和前沿的知識,適合有一定開發基礎的開發者閱讀,這有助於他們提高技術水平;同時,《Android進階之光》系統的知識體系結構也令高級開發者從中獲益良多。

目錄

第1章 Android新特性 1

1.1 Android 5.0新特性 1

1.1.1 Android 5.0主要新特性概述 1

1.1.2 替換ListView和GridView的RecyclerView 3

1.1.3 卡片CardView 13

1.1.4 3種Notification 18

1.1.5 Toolbar與Palette 23

1.2 Android 6.0新特性 29

1.2.1 Android 6.0主要新特性概述 29

1.2.2 運行時許可權機制 30

1.3 Android 7.0新特性 43

1.3.1 Android 7.0主要新特性概述 43

1.3.2 多視窗模式 44

1.4 本章小結 47

第2章 Material Design 48

2.1 Material Design概述 48

2.1.1 核心思想 48

2.1.2 材質與空間 49

2.1.3 動畫 49

2.1.4 樣式 50

2.1.5 圖示 51

2.1.6 圖像 51

2.1.7 組件 51

2.2 Design Support Library常用控制項詳解 54

2.2.1 Snackbar的使用 54

2.2.2 用TextInputLayout實現登錄界面 55

2.2.3 FloatingActionButton的使用 60

2.2.4 用TabLayout實現類似網易選項卡的動態滑動效果 61

2.2.5 用NavigationView實現抽屜選單界面 68

2.2.6 用CoordinatorLayout實現Toolbar隱藏和摺疊 74

2.3 本章小結 86

第3章 View體系與自定義View 87

3.1 View與ViewGroup 87

3.2 坐標系 89

3.2.1 Android坐標系 89

3.2.2 View坐標系 90

3.3 View的滑動 91

3.3.1 layout()方法 92

3.3.2 offsetLeftAndRight()與offsetTopAndBottom() 94

3.3.3 LayoutParams(改變布局參數) 95

3.3.4 動畫 95

3.3.5 scrollTo與scollBy 96

3.3.6 Scroller 98

3.4 屬性動畫 99

3.5 解析Scroller 105

3.6 View的事件分發機制 108

3.6.1 源碼解析Activity的構成 108

3.6.2 源碼解析View的事件分發機制 112

3.7 View的工作流程 119

3.7.1 View的工作流程入口 119

3.7.2 理解MeasureSpec 122

3.7.3 View的measure流程 126

3.7.4 View的layout流程 132

3.7.5 View的draw流程 135

3.8 自定義View 139

3.8.1 繼承系統控制項的自定義View 140

3.8.2 繼承View的自定義View 141

3.8.3 自定義組合控制項 147

3.8.4 自定義ViewGroup 152

3.9 本章小結 164

第4章 多執行緒編程 165

4.1 執行緒基礎 165

4.1.1 進程與執行緒 165

4.1.2 執行緒的狀態 167

4.1.3 創建執行緒 168

4.1.4 理解中斷 170

4.1.5 安全地終止執行緒 171

4.2 同步 173

4.2.1 重入鎖與條件對象 173

4.2.2 同步方法 175

4.2.3 同步代碼塊 176

4.2.4 volatile 177

4.3 阻塞佇列 183

4.3.1 阻塞佇列簡介 183

4.3.2 Java中的阻塞佇列 184

4.3.3 阻塞佇列的實現原理 186

4.3.4 阻塞佇列的使用場景 188

4.4 執行緒池 190

4.4.1 ThreadPoolExecutor 190

4.4.2 執行緒池的處理流程和原理 192

4.4.3 執行緒池的種類 193

4.5 AsyncTask的原理 197

4.6 本章小結 203

第5章 網路編程與網路框架 204

5.1 網路分層 204

5.2 TCP的三次握手與四次揮手 205

5.3 HTTP協定原理 207

5.3.1 HTTP簡介 207

5.3.2 HTTP請求報文 208

5.3.3 HTTP回響報文 209

5.3.4 HTTP的訊息報頭 210

5.3.5 抓包套用舉例 211

5.4 HttpClient與HttpURLConnection 212

5.4.1 HttpClient 212

5.4.2 HttpURLConnection 216

5.5 解析Volley 218

5.5.1 Volley基本用法 218

5.5.2 源碼解析Volley 223

5.6 解析OkHttp 231

5.6.1 OkHttp基本用法 232

5.6.2 源碼解析OkHttp 240

5.7 解析Retrofit 255

5.7.1 Retrofit基本用法 255

5.7.2 源碼解析Retrofit 261

5.8 本章小結 270

第6章 設計模式 271

6.1 設計模式六大原則 271

6.2 設計模式分類 273

6.3 創建型設計模式 273

6.3.1 單例模式 274

6.3.2 簡單工廠模式 277

6.3.3 工廠方法模式 279

6.3.4 建造者模式 281

6.4 結構型設計模式 284

6.4.1 代理模式 285

6.4.2 裝飾模式 288

6.4.3 外觀模式 291

6.4.4 享元模式 295

6.5 行為型設計模式 298

6.5.1 策略模式 298

6.5.2 模板方法模式 301

6.5.3 觀察者模式 304

6.6 本章小結 307

第7章 事件匯流排 308

7.1 解析EventBus 308

7.1.1 使用EventBus 308

7.1.2 源碼解析EventBus 314

7.2 解析otto 324

7.2.1 使用otto 324

7.2.2 源碼解析otto 327

第8章 函式回響式編程 333

8.1 RxJava基本用法 333

8.1.1 RxJava概述 333

8.1.2 RxJava基本實現 334

8.1.3 RxJava的不完整定義回調 336

8.2 RxJava的Subject 338

8.3 RxJava操作符入門 339

8.3.1 創建操作符 339

8.3.2 變換操作符 340

8.3.3 過濾操作符 344

8.3.4 組合操作符 349

8.3.5 輔助操作符 352

8.3.6 錯誤處理操作符 355

8.3.7 條件操作符和布爾操作符 357

8.3.8 轉換操作符 360

8.4 RxJava的執行緒控制 362

8.5 RxJava的使用場景 362

8.5.1 RxJava結合OkHttp訪問網路 362

8.5.2 RxJava結合Retrofit訪問網路 364

8.5.3 用RxJava實現RxBus 368

8.6 RxJava源碼解析 370

8.6.1 RxJava的訂閱過程 371

8.6.2 RxJava的變換過程 372

8.6.3 RxJava的執行緒切換過程 376

8.7 本章小結 381

第9章 註解與依賴注入框架 382

9.1 註解 382

9.1.1 註解分類 382

9.1.2 定義註解 384

9.1.3 註解處理器 385

9.2 依賴注入的原理 392

9.2.1 控制反轉與依賴注入 392

9.2.2 依賴注入的實現方式 393

9.3 依賴注入框架 395

9.3.1 為何使用依賴注入框架 395

9.3.2 解析ButterKnife 395

9.3.3 解析Dagger2 405

9.4 本章小結 421

第10章 套用架構設計 422

10.1 MVC模式 422

10.2 MVP模式 423

10.2.1 套用MVP模式 424

10.2.2 MVP結合RxJava和Dagger2 431

10.3 MVVM模式 438

10.3.1 解析Data Binding 439

10.3.2 套用Data Binding 457

10.4 本章小結 459

第11章 系統架構與MediaPlayer框架 460

11.1 Android系統架構 460

11.2 Android系統源碼目錄 463

11.2.1 整體結構 463

11.2.2 套用層部分 464

11.2.3 套用框架層部分 465

11.2.4 C/C++程式庫部分 465

11.3 Source Insights使用 466

11.4 MediaPlayer框架 467

11.4.1 Java Framework層的MediaPlayer分析 467

11.4.2 JNI層的MediaPlayer分析 469

11.4.3 Native層的MediaPlayer分析 471

11.5 本章小結 478

後記 479

相關詞條

熱門詞條

聯絡我們