本書是一本Android進階類圖書,書中各知識點由淺入深、環(huán)環(huán)相扣,最終這些知識點形成了一個體系結(jié)構(gòu)。本書共分為11章。第1章介紹從Android 5.0到Android 10.0各版本的新特性。第2章介紹Material Design。第3章介紹View體系,包括View的事件分發(fā)機制、工作流程、自定義View等知識點。第4章介紹多線程的知識。第5章介紹網(wǎng)絡(luò)編程與網(wǎng)絡(luò)框架的知識。第6章介紹常用的設(shè)計模式。第7章介紹事件總線。第8到第10章介紹架構(gòu)設(shè)計所需要的知識點。第11章簡單介紹Android系統(tǒng)框架與MediaPlayer框架。本書詳細并深入講解Android開發(fā)者必備的和前沿的知識,適合有一定基礎(chǔ)的開發(fā)者閱讀,有助于他們提高技術(shù)水平;同時,本書系統(tǒng)化的知識體系也可以令高級開發(fā)者獲益良多。
劉望舒 騰訊云最具價值專家(TVP),國內(nèi)知名Android技術(shù)專家,著有暢銷書《Android進階之光》《Android進階解密》 《Android進階指北》,電子工業(yè)出版社博文視點2017、2018、2019、2020年度優(yōu)秀作者。谷歌開發(fā)者社區(qū)、Droidcon等技術(shù)大會特邀講師。CSDN知名博主,榮獲CSDN 2018年度博客之星稱號。11年Android開發(fā)經(jīng)驗,曾在華為、開心網(wǎng)等知名公司任職,目前就職于某大型互聯(lián)網(wǎng)公司,擔任技術(shù)負責人,負責架構(gòu)和管理工作。
目錄
Android進階三部曲知識體系
第1章 Android新特性
1.1 Android 5.0新特性
1.1.1 Android 5.0主要新特性概述
1.1.2 替換ListView和GridView的RecyclerView
1.1.3 CardView
1.1.4 三種Notification
1.1.5 Toolbar與Palette
1.2 Android 6.0新特性
1.2.1 Android 6.0主要新特性概述
1.2.2 運行時的權(quán)限機制
1.3 Android 7.0新特性
1.3.1 Android 7.0主要新特性概述
1.3.2 多窗口模式
1.4 Android 8.0新特性
1.5 Android 9.0新特性
1.6 Android 10.0新特性
1.7 本章小結(jié)
第2章 Material Design
2.1 Material Design概述
2.1.1 核心思想
2.1.2 材質(zhì)與空間
2.1.3 動畫
2.1.4 樣式
2.1.5 圖標
2.1.6 圖像
2.1.7 組件
2.2 Design Support Library常用控件詳解
2.2.1 Snackbar的使用
2.2.2 用TextInputLayout實現(xiàn)登錄界面
2.2.3 FloatingActionButton的使用
2.2.4 用TabLayout實現(xiàn)類似網(wǎng)易選項卡的動態(tài)滑動效果
2.2.5 用NavigationView實現(xiàn)抽屜菜單界面
2.2.6 用CoordinatorLayout實現(xiàn)Toolbar的隱藏和折疊
2.3 本章小結(jié)
第3章 View體系與自定義View
3.1 View與ViewGroup
3.2 坐標系
3.2.1 Android坐標系
3.2.2 View坐標系
3.3 View的滑動
3.3.1 layout方法
3.3.2 offsetLeftAndRight()與offsetTopAndBottom()
3.3.3 LayoutParams(改變布局參數(shù))
3.3.4 動畫
3.3.5 scrollTo與scrollBy
3.3.6 Scroller
3.4 屬性動畫
3.5 源碼解析Scroller
3.6 View的事件分發(fā)機制
3.6.1 源碼解析Activity的構(gòu)成
3.6.2 源碼解析View的事件分發(fā)機制
3.7 View的工作流程
3.7.1 View的工作流程入口
3.7.2 理解MeasureSpec
3.7.3 View的measure流程
3.7.4 View的layout流程
3.7.5 View的draw流程
3.8 自定義View
3.8.1 繼承系統(tǒng)控件的自定義View
3.8.2 繼承View的自定義View
3.8.3 自定義組合控件
3.8.4 自定義ViewGroup
3.9 本章小結(jié)
第4章 多線程編程
4.1 線程基礎(chǔ)
4.1.1 進程與線程
4.1.2 線程的狀態(tài)
4.1.3 創(chuàng)建線程
4.1.4 理解中斷
4.1.5 安全地終止線程
4.2 線程同步
4.2.1 重入鎖與條件對象
4.2.2 同步方法
4.2.3 同步代碼塊
4.2.4 volatile
4.3 阻塞隊列
4.3.1 阻塞隊列簡介
4.3.2 Java中的阻塞隊列
4.3.3 阻塞隊列的實現(xiàn)原理
4.3.4 阻塞隊列的使用場景
4.4 線程池
4.4.1 ThreadPoolExecutor
4.4.2 線程池的處理流程和原理
4.4.3 線程池的種類
4.5 AsyncTask的原理
4.6 本章小結(jié)
第5章 網(wǎng)絡(luò)編程與網(wǎng)絡(luò)框架
5.1 網(wǎng)絡(luò)分層
5.2 TCP的三次握手與四次揮手
5.3 HTTP原理
5.3.1 HTTP簡介
5.3.2 HTTP請求報文
5.3.3 HTTP響應(yīng)報文
5.3.4 HTTP的消息報頭
5.3.5 抓包應(yīng)用舉例
5.4 HttpClient與HttpURLConnection
5.4.1 HttpClient
5.4.2 HttpURLConnection
5.5 解析Volley
5.5.1 Volley的基本用法
5.5.2 源碼解析Volley
5.6 解析OkHttp
5.6.1 OkHttp的基本用法
5.6.2 源碼解析OkHttp 4
5.7 解析Retrofit
5.7.1 Retrofit的基本用法
5.7.2 源碼解析Retrofit
5.8 本章小結(jié)
第6章 設(shè)計模式
6.1 設(shè)計模式的六大原則
6.2 設(shè)計模式的分類
6.3 創(chuàng)建型設(shè)計模式
6.3.1 單例模式
6.3.2 簡單工廠模式
6.3.3 工廠方法模式
6.3.4 建造者模式
6.4 結(jié)構(gòu)型設(shè)計模式
6.4.1 代理模式
6.4.2 裝飾模式
6.4.3 外觀模式
6.4.4 享元模式
6.5 行為型設(shè)計模式
6.5.1 策略模式
6.5.2 模板方法模式
6.5.3 觀察者模式
6.6 本章小結(jié)
第7章 事件總線
7.1 解析EventBus
7.1.1 使用EventBus
7.1.2 源碼解析EventBus
7.2 解析otto
7.2.1 使用otto
7.2.2 源碼解析otto
第8章 函數(shù)式編程
8.1 RxJava 3.x的基本用法
8.1.1 RxJava 3.x概述
8.1.2 RxJava 3.x的基本實現(xiàn)
8.2 RxJava 3.x的Subject和Processor
8.2.1 Subject的分類
8.2.2 Processor
8.3 RxJava 3.x操作符入門
8.3.1 創(chuàng)建操作符
8.3.2 變換操作符
8.3.3 過濾操作符
8.3.4 組合操作符
8.3.5 輔助操作符
8.3.6 錯誤處理操作符
8.3.7 條件操作符和布爾操作符
8.3.8 轉(zhuǎn)換操作符
8.4 RxJava 3.x的線程控制
8.5 RxJava 3.x的使用場景
8.5.1 RxJava 3.x結(jié)合OkHttp訪問網(wǎng)絡(luò)
8.5.2 RxJava 3.x結(jié)合Retrofit訪問網(wǎng)絡(luò)
8.5.3 用RxJava 3.x實現(xiàn)RxBus
8.6 本章小結(jié)
第9章 注解與依賴注入框架
9.1 注解
9.1.1 注解分類
9.1.2 定義注解
9.1.3 注解處理器
9.2 依賴注入的原理
9.2.1 控制反轉(zhuǎn)與依賴注入
9.2.2 依賴注入的實現(xiàn)方式
9.3 依賴注入框架
9.3.1 為何使用依賴注入框架
9.3.2 解析ButterKnife
9.3.3 解析Dagger2
9.4 本章小結(jié)
第10章 應(yīng)用架構(gòu)設(shè)計
10.1 MVC模式
10.2 MVP模式
10.2.1 應(yīng)用MVP模式
10.2.2 MVP結(jié)合RxJava和Dagger2
10.3 MVVM模式
10.3.1 解析Data Binding
10.3.2 應(yīng)用Data Binding
10.4 本章小結(jié)
第11章 系統(tǒng)架構(gòu)與MediaPlayer框架
11.1 Android系統(tǒng)架構(gòu)
11.2 Android系統(tǒng)源碼目錄
11.2.1 整體結(jié)構(gòu)
11.2.2 應(yīng)用層部分
11.2.3 應(yīng)用框架層部分
11.2.4 C/C++程序庫部分
11.3 Source Insight的使用
11.4 MediaPlayer框架
11.4.1 Java Framework層的MediaPlayer分析
11.4.2 JNI層的MediaPlayer分析
11.4.3 Native層的MediaPlayer分析
11.5 本章小結(jié)
后記