內容簡介
本書從簡單到複雜系統地講解了Android研發所涉及的全面開發技術。內容包括:高級圖形圖像處理;圖形圖像渲染的梯度漸變;由靜至動的動態拖曳View 及動畫,View 高級特性;高級組件開發;桌面部件App Widget;OKHttp一攬子網路技術解決方案;圖片載入利器Glide;高階Java多執行緒在Android中的運用;大數據、多任務、斷點續斷下載管理;記憶體與物理存儲高效快取及策略;進程間通信之AIDL機制;框架性架構體系;企業級開發ORM 資料庫技術;多媒體與圖像識別掃描技術;藍牙網路通信技術;RxJava/RxAndroid脈絡清晰的回響式編程;Android DataBinding:MVVM 架構基石,數據驅動App運轉;Android NDK 開發技術;Android感測器。本書在技術點編排上循序漸進,側重培養在實際項目開發中的動手能力;精心選取的關鍵程式代碼,由淺入深地幫助讀者快速、直觀地深入到代碼層面理解和掌握Android高級開發技術。
本書適合Android初學者和需要在Android開發技術方面進階的中級開發者使用。
圖書目錄
第1章 高級圖形圖像處理…………………………………………………………… 1
1.1 ShapeDrawable、PaintDrawable與 OvalShape、RectShape、ArcShape ………………… 1
1.2 GradientDrawable梯度漸變 ……………………………………………………… 3
1.3 過渡動畫的 TransitionDrawable …………………………………………………… 9
1.4 圓形圓角圖像 …………………………………………………………………… 10
1.5 ImageView 的setImageLevel和level-list ………………………………………… 13
1.6 紅色小圓球樣式的新訊息提醒 …………………………………………………… 14
1.7 小 結 …………………………………………………………………………… 18
第2章 圖形圖像渲染的梯度漸變 ………………………………………………… 20
2.1 線性梯度漸變渲染器 LinearGradient……………………………………………… 20
2.2 掃描梯度漸變渲染器SweepGradient……………………………………………… 23
2.3 放射環狀梯度漸變渲染器 RadialGradient ………………………………………… 25
2.4 xml配置線性梯度漸變 …………………………………………………………… 26
2.5 xml配置放射狀梯度漸變 ………………………………………………………… 31
2.6 xml配置掃描形梯度漸變 ………………………………………………………… 34
2.7 小 結 …………………………………………………………………………… 35
第3章 由靜至動的動態拖曳 View及動畫 ……………………………………… 36
3.1 alpha:透明漸變屬性動畫 ………………………………………………………… 36
3.2 rotation:旋轉屬性動畫 …………………………………………………………… 37
3.3 translation:位移屬性動畫 ………………………………………………………… 38
3.4 scale:縮放屬性動畫 ……………………………………………………………… 39
3.5 AnimatorSet:屬性動畫集 ………………………………………………………… 40
3.6 ViewDragHelper:拖曳管控 ……………………………………………………… 42
3.7 小 結 …………………………………………………………………………… 50
第4章 View高級特性 ……………………………………………………………… 51
4.1 橫豎屏切換不同尺寸的 View …………………………………………………… 51
4.2 onMeasure控制 View 的大小尺寸 ………………………………………………… 54
4.3 onLayout控制子 View 的空間位置 ……………………………………………… 59
4.4 小 結 …………………………………………………………………………… 63
第5章 高級組件開發 ……………………………………………………………… 65
5.1 Android設備訊息通知 …………………………………………………………… 65
5.2 狀態欄的通知訊息點擊觸發事件啟動後台的 Activity………………………………… 68
5.3 訊息通知的自定義布局…………………………………………………………… 69
5.4 WindowManager懸浮窗 ………………………………………………………… 70
5.5 白天/夜間模式標準實現 ………………………………………………………… 72
5.6 小 結 …………………………………………………………………………… 77
第6章 桌面部件 AppWidget……………………………………………………… 78
6.1 桌面部件 AppWidget的簡單實現 ………………………………………………… 78
6.2 桌面部件 AppWidget的定製開發 ………………………………………………… 84
6.3 簡單音樂播放器的桌面部件 Widget ……………………………………………… 89
6.4 小 結 …………………………………………………………………………… 95
第7章 OkHttp一攬子網路技術解決方案 ………………………………………… 96
7.1 OkHttp異步方式下載 …………………………………………………………… 96
7.2 OkHttp同步方式載入數據 ……………………………………………………… 100
7.3 OKHttp的post上傳 …………………………………………………………… 101
7.4 OkHttp的基本配置 …………………………………………………………… 104
7.6 小 結 ………………………………………………………………………… 110
第8章 圖片載入利器 Glide ……………………………………………………… 112
8.1 Glide最簡單的網路圖片載入方式 ……………………………………………… 112
8.2 Glide載入gif動態圖 …………………………………………………………… 113
8.3 Glide占點陣圖placeholder………………………………………………………… 114
8.4 Glide載入圖片的特殊效果 ……………………………………………………… 115
8.5 Glide記憶體快取和硬碟快取 ……………………………………………………… 121
8.6 小 結 ………………………………………………………………………… 123
第9章 高階Java多執行緒在 Android中的運用 ………………………………… 124
9.1 多執行緒技術概述 ………………………………………………………………… 125
9.2 Java執行緒池 ThreadPoolExecutor………………………………………………… 126
9.3 Java執行緒池的調度ScheduledThreadPoolExecutor ……………………………… 129
9.4 Future、Callable類獲得執行緒返回結果 …………………………………………… 131
9.5 FutureTask執行緒類詳解 ………………………………………………………… 134
9.6 Java執行緒安全的 LinkedBlockingQueue類和 ConcurrentLinkedQueue類 …………… 136
9.7 小 結 ………………………………………………………………………… 139
第10章 大數據、多任務、斷點續傳下載管理 …………………………………… 140
10.1 DownloadManager開發簡介 …………………………………………………… 140
10.2 DownloadManager下載狀態查詢 ……………………………………………… 145
10.3 DownloadManager下載進度、存放目錄等 ……………………………………… 147
10.4 DownloadManager下載完成事件監聽…………………………………………… 148
10.5 小 結 ………………………………………………………………………… 150
第11章 記憶體與物理存儲高效快取及策略 ……………………………………… 152
11.1 引入 LruCache記憶體快取技術的背景 …………………………………………… 152
11.2 記憶體 LruCache快取及算法的策略思想 ………………………………………… 153
11.3 二級快取 LruCache和 DiskLruCache …………………………………………… 159
11.4 DiskLruCache快取讀寫操作具體過程 ………………………………………… 162
11.5 小 結 ………………………………………………………………………… 165
第12章 進程間通信之 AIDL機制 ……………………………………………… 166
12.1 進程間通信概述 ……………………………………………………………… 166
12.1.7 信號量 …………………………………………………………………… 169
12.1.8 套接字 …………………………………………………………………… 170
12.2 進程間通信 …………………………………………………………………… 170
12.2.1 進程間通信 AIDL之伺服器端 …………………………………………… 171
12.2.2 進程間通信 AIDL之客戶端 ……………………………………………… 173
12.3 進程間通信 AIDL之雙向通信 ………………………………………………… 175
12.4 小 結 ……………………………………………………………………… 179
第13章 框架性架構體系 ………………………………………………………… 180
13.1 EventBus:靈活輕便的跨域訊息通信 …………………………………………… 180
13.2 Lifecycle:從生命周期中解放出來 ……………………………………………… 184
13.3 Android運行時許可權 …………………………………………………………… 187
13.4 小 結 ………………………………………………………………………… 192
第14章 企業級開發 ORM 資料庫技術 ………………………………………… 194
14.1 ORMLite資料庫環境搭建 ……………………………………………………… 194
14.2 ORMLite資料庫套用開發 ……………………………………………………… 195
14.3 ORMLite的外鍵關聯映射 ……………………………………………………… 200
14.4 Android平台上的greenDAO 關係資料庫 ……………………………………… 205
14.5 greenDAO 關係映射模型 ……………………………………………………… 213
14.6 小 結 ………………………………………………………………………… 218
第15章 多媒體與圖像識別掃描技術 …………………………………………… 219
15.1 Android二維碼/條形碼技術方案綜述 ………………………………………… 219
15.2 Android二維碼/條形碼技術開發實踐 ………………………………………… 220
15.3 SurfaceView 簡介與實例 ……………………………………………………… 223
15.4 TextureView 與SurfaceTexture實現相機拍照 ………………………………… 226
15.5 TextureView 與 MediaPlayer實現視頻播放 …………………………………… 231
15.6 小 結 ………………………………………………………………………… 233
第16章 藍牙網路通信技術 ……………………………………………………… 235
16.1 發現藍牙設備 ………………………………………………………………… 236
16.2 PairedBluetoothDevices:藍牙設備配對 ………………………………………… 241
16.3 藍牙設備連線的建立…………………………………………………………… 243
16.4 藍牙設備之間的數據傳輸 ……………………………………………………… 247
16.5 手機端通過藍牙傳送檔案到電腦端 …………………………………………… 252
16.6 小 結 ………………………………………………………………………… 260
第17章 RxJava/RxAndroid脈絡清晰的回響式編程 …………………………… 261
17.1 RxJava/RxAndroid技術概論 …………………………………………………… 261
17.2 intervalRange與interval間隔、周期性地發射數據流 …………………………… 264
17.3 map和flatMap操作符 ………………………………………………………… 266
17.4 zip、merge和concat操作符 …………………………………………………… 269
17.5 scan和filter操作符 …………………………………………………………… 272
17.6 take、skip和takeLast操作符 …………………………………………………… 275
17.7 ofType根據類型選擇輸出結果 ………………………………………………… 277
17.8 distinct與distinctUntilChanged操作符 ………………………………………… 279
17.9 doAfterNext和doOnNext接力鏈式操作 ……………………………………… 280
17.10 buffer緩衝操作符 …………………………………………………………… 282
17.11 retry錯誤重試 ……………………………………………………………… 285
17.12 小 結 ……………………………………………………………………… 288
第18章 AndroidDataBinding:MVVM 架構基石,數據驅動 App運轉 ……… 289
18.1 AndroidDataBinding概述 ……………………………………………………… 289
18.2 初識 AndroidDataBinding……………………………………………………… 291
18.3 notifyPropertyChanged:動態更新數據 ………………………………………… 295
18.4 @=操作符雙向綁定…………………………………………………………… 298
18.5 數據綁定的 BindingAdapter適配器 …………………………………………… 299
18.6 BindingMethods可實現 BindingAdapter功能 …………………………………… 301
18.7 基於InverseBindingAdapter實現雙向綁定之反向綁定 ………………………… 302
18.8 基於InverseBindingMethods實現雙向綁定之反向綁定 ……………………………… 308
18.9 基於 BindingAdapter與InverseBindingAdapter實現SeekBar雙向綁定…………… 310
18.10 基於InverseBindingMethods實現SeekBar雙向綁定 ……………………………… 313
18.11 AndroidDataBinding技術在傳統ListView中的運用………………………………… 315
18.12 AndroidDataBinding技術在 RecyclerView中的運用 ……………………………… 317
18.13 AndroidDataBinding的 Lambda表達式 ……………………………………… 318
18.14 小 結 ……………………………………………………………………… 320
第19章 AndroidNDK 開發技術 ………………………………………………… 321
19.1 JavaJNI技術簡介……………………………………………………………… 321
19.2 AndroidNDK 開發環境配置 …………………………………………………… 323
19.3 AndroidStudio自動生成的 NDK工程代碼結構分析 ……………………………… 325
19.4 自定義實現 Android的 NDK 庫 ………………………………………………… 328
19.5 小 結 ………………………………………………………………………… 332
第20章 Android感測器 ………………………………………………………… 333
20.1 Android感測器開發概述 ……………………………………………………… 334
20.2 Android線性加速度感測器 …………………………………………………… 335
20.3 Android近距離感測器 ………………………………………………………… 338
20.4 Android壓力感測器 …………………………………………………………… 340
20.5 Android光強感測器 …………………………………………………………… 341
20.6 Android方位感測器 …………………………………………………………… 342
20.7 Android運動計步感測器 ……………………………………………………… 345
20.8 小 結 ………………………………………………………………………… 346
參考文獻 …………………………………………………………………………… 348
作者簡介
張飛,2004年至2011年就讀於四川大學。2008年本科畢業後被保送攻讀計算機科學與技術碩士研究生。專注於Android新技術研究和套用開發。長期活躍於中國Android技術領域,2017年11月受邀參加國際Android技術大會並作為嘉賓發表主題演講。寫有CSDN原創技術部落格,部落格閱讀量達到300萬+,同時是CSDN部落格專家和專欄作家。