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