本書收集了約20個關于高級Android開發的進階實例,這些實例都是對在日常開發中遇到的問題的抽象,涉及整個Android開發的各個技術棧。本書從常見的問題入手,引導讀者逐步地掌握進階的各個實例,同時提供分析和解決問題的思考過程,尋求最優方案。本書的內容分為以下幾個部分。進階基礎:通過管中窺豹,剖析Activity和View的一些基本概念,展示源碼分析的常見方法;高階控件:講解MD的兩個復合布局和約束布局,介紹高級控件的開發流程;項目架構:架構是項目的骨骼,該部分介紹主流的MVP系列和Flux架構;響應式編程:解析響應式編程三劍客RxJava+Dagger+Retrofit的不同特性組合使用方法;功能與動畫:列舉若干實際開發中的經典實例,包含功能定制和頁面動畫等;Kotlin與SVG:講解Kotlin編程語言和SVG圖像技術的若干開發技巧;測試與優化:介紹自動化測試框架的設計方法,以及優化應用的常用工具。通過對本書的學習,讀者可以極大地提高Android開發的工程能力,從而成為一名合格的高級Android工程師,不僅在理論上有所提升,在實踐中也能直接應用。高級Android工程師通過對本書的學習也能完善知識體系和技術棧。
王辰龍算法資深工程師,畢業于北京交通大學。在移動互聯網公司從事多年技術研發工作,對于技術與產品有著深刻的理解。熱愛開源,熱愛分享,追求極致的技術實現。踐行工匠精神,崇尚“藝無止境”。
第1章 進階基礎 1
1.1 深入剖析 Activity 的生命周期 1
1.1.1 Activity的生命周期的各種狀態 2
1.1.2 實例:準備 4
1.1.3 實例:因硬件導致的生命周期變化 6
1.1.4 實例:頁面切換時的生命周期變化 11
1.1.5 實例:由系統原因導致的生命周期變化 16
1.2 深入剖析Activity的啟動模式 20
1.2.1 ADB命令 20
1.2.2 標準模式 21
1.2.3 棧頂復用模式 25
1.2.4 棧內復用模式 27
1.2.5 單實例模式 32
1.2.6 startActivity 34
1.3 深入剖析View的工作流程 36
1.3.1 裝飾視圖和MeasureSpec 38
1.3.2 測量 39
1.3.3 布局 44
1.3.4 繪制 45
1.4 深入剖析View的動畫原理 47
1.4.1 默認視圖動畫 48
1.4.2 自定義視圖動畫 51
1.4.3 幀動畫 54
1.4.4 屬性動畫 54
1.4.5 列表控件 58
第2章 高階控件 62
2.1 熟練掌握AppBarLayout的開發技術 62
2.1.1 搭建項目框架 63
2.1.2 頁面設置ViewPager布局 67
2.1.3 頁面添加AppBarLayout布局 73
2.1.4 頁面添加AppBarLayout邏輯 76
2.1.5 頁面添加AppBarLayout動畫 81
2.2 熟練掌握 CoordinatorLayout的開發技術 85
2.2.1 項目框架 86
2.2.2 布局設計 86
2.2.3 聯動邏輯 90
2.2.4 圖片交互 93
2.3 熟練掌握 ConstraintLayout 的開發技術 96
2.3.1 工程配置 97
2.3.2 約束布局 99
2.3.3 鏈式結構 107
第3章 項目架構 110
3.1 頂層設計 Android 的工程架構 110
3.1.1 MVC架構 111
3.1.2 MVP架構 116
3.1.3 MVVM架構 120
3.2 頂層設計基于Flux的流式架構 124
3.2.1 視圖 125
3.2.2 行為創建器 129
3.2.3 調度器 131
3.2.4 存儲器 133
第4章 響應式編程 141
4.1 全面解析響應式庫RxJava的使用方式 141
4.1.1 項目框架 142
4.1.2 鏈式表達式 144
4.1.3 流的加工函數 148
4.1.4 Ambda表達式 151
4.1.5 網絡請求 152
4.1.6 控件的異步事件 159
4.1.7 線程安全 161
4.2 全面解析依賴注入庫 Dagger 的使用方式 164
4.2.1 工程配置 165
4.2.2 主頁邏輯 166
4.2.3 詳情邏輯 169
4.3 基于響應式編程的網絡數據同步及緩存框架 173
4.3.1 工程配置 174
4.3.2 首頁 175
4.3.3 數據源 177
4.3.4 依賴注入 179
4.3.5 無緩存模式 181
4.3.6 緩存模式 183
第5章 炫酷功能 186
5.1 設計與實現朋友圈視頻的滾動播放功能 186
5.1.1 項目框架 187
5.1.2 視頻列表 189
5.1.3 視頻項的適配器 193
5.1.4 視頻列表項 196
5.2 設計與實現基于 DialogFragment 的底部彈窗布局 200
5.2.1 首頁邏輯 201
5.2.2 彈窗樣式 202
5.2.3 彈窗邏輯 204
第6章 精美動畫 208
6.1 實現頁面切換中元素分享的動畫效果 208
6.1.1 項目框架 208
6.1.2 效果顯示動畫 210
6.1.3 預留位置動畫 214
6.2 實現頁面展開中圓形爆炸的動畫效果 220
6.2.1 首頁邏輯 221
6.2.2 新頁邏輯 223
6.2.3 顯示動畫 226
6.2.4 退出動畫 229
第7章 Kotlin與SVG 231
7.1 Kotlin基礎教程 231
7.1.1 基礎部分 232
7.1.2 進階部分 237
7.2 SVG基礎教程 241
7.2.1 Vector圖像 242
7.2.2 Vector動畫 245
7.2.3 第三方Sharp庫 249
第8章 測試與優化 254
8.1 基于Espresso和Dagger的自動化測試框架 254
8.1.1 工程配置 255
8.1.2 業務邏輯 257
8.1.3 功能測試 265
8.2 優化內存泄漏與電量消耗的技術框架 272
8.2.1 內存泄漏 272
8.2.2 電量優化 282