高性能 Android 開發技術
內容描述
本書從簡單到復雜系統地講解了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博客專家和專欄作家。