日本免费精品视频,男人的天堂在线免费视频,成人久久久精品乱码一区二区三区,高清成人爽a毛片免费网站

在線客服
Android高級進階圖書
人氣:34

Android高級進階

本書從基礎、架構、安全、性能優化、新技術、測試等角度,通過簡單的代碼示例詳盡地展示了 Android 開發技巧

內容簡介

本書是Android的進階學習指南,主要為Android初中級開發者進階所需的知識,高級開發者也可以從本書中發現很多共鳴點。本書從8個方面對50個知識點進行分類講解,包括基礎篇、系統架構篇、經驗總結篇、新技術篇、性能優化篇、移動安全篇、工具篇、測試篇。熟練掌握這些知識點后,應該就能夠應付實際項目開發中的絕大部分問題了。 本書的主要目的在于給讀者一個完整的Android中高級開發者知識圖譜。筆者希望通過本書的系統講解,能夠幫助讀者在面試和工作中收獲自己滿意的成績。

編輯推薦

本書從基礎、架構、安全、性能優化、新技術、測試等角度,通過簡單的代碼示例詳盡地展示了 Android 開發技巧

本書作者技術基礎深厚扎實,是新技術的探索和追逐者,他對于技術發自內心地熱愛, 是業界非常的 Android 架構師

本書是作者在一線互聯網企業工作多年的經驗沉淀,從不同角度對 Android 新技術拋磚引玉,由淺入深,將實戰中的案例抽象成原型,通俗易懂

本書對于技術的解讀樸實風趣,深入淺出,是 Android 工程師的進階寶典,騰訊、華為、阿里、百度、平安科技等一線移動開發工程師聯袂推薦

作者簡介

顧浩鑫,網絡 ID:ASCE1885,平安金融科技移動研發工程師,目前主要從事 Android & React Native 相關研發工作,畢業于華中科技大學圖像識別與人工智能研究所,曾先后就職于華為、百度、平安科技。

目錄

第1篇基礎篇

第1章Android觸摸事件傳遞機制

1.1觸摸事件的類型

1.2事件傳遞的三個階段

1.3View的事件傳遞機制

1.4ViewGroup的事件傳遞機制

第2章Android View的繪制流程

2.1繪制的整體流程

2.2MeasureSpec

2.3Measure

2.4Layout

2.5Draw

第3章Android 動畫機制

3.1逐幀動畫(Frame Animation)

3.1.1XML 資源文件方式

3.1.2代碼方式

3.2補間動畫(Tween Animation)

3.2.1插值器 Interpolator

3.2.2AlphaAnimation

3.2.3ScaleAnimation

3.2.4TranslateAnimation

3.2.5RotateAnimation

3.2.6自定義補間動畫

3.3屬性動畫(Property Animation)

3.3.1Evaluator

3.3.2AnimatorSet

3.3.3ValueAnimator

3.3.4ObjectAnimator

3.4過渡動畫(Transition Animation)

第4章Support Annotation Library 使用詳解

4.1Nullness 注解

4.2資源類型注解

4.3類型定義注解

4.4線程注解

4.5RGB 顏色值注解

4.6值范圍注解

4.7權限注解

4.8重寫函數注解

4.9返回值注解

4.10@VisibleForTesting

4.11@Keep

第5章Percent Support Library使用詳解

第6章Design Support Library使用詳解

6.1Snackbar

6.2TextInputLayout

6.3TabLayout

6.4NavigationView

6.4.1導航菜單

6.4.2導航頭部

6.5FloatingActionButton

6.5.1使用浮動操作按鈕

6.5.2其他選項

6.5.3點擊事件

6.6CoordinatorLayout

6.7CollapsingToolbarLayout

6.8BottomSheetBehavior

第7章Android Studio中的NDK開發

7.1ABI的基本概念

7.2引入預編譯的二進制 C/C 函數庫

7.3直接從 C/C 源碼編譯

7.3.1配置 ndk.dir 變量

7.3.2在 Gradle 中配置 NDK 模塊

7.3.3添加 C/C 文件到指定的目錄

7.4使用 .so 文件的注意事項

7.4.1使用高平臺版本編譯的 .so 文件運行在低版本的設備上

7.4.2混合使用不同的C 運行時編譯的 .so 文件

7.4.3沒有為每個支持的 CPU 架構提供對應的 .so 文件

7.4.4將 .so 文件放在錯誤的地方

7.4.5只提供 armeabi 架構的 .so 文件而忽略其他 ABIs 的

第8章Gradle 必知必會

8.1共享變量的定義

8.2通用配置

8.3aar 函數庫的引用

8.4簽名和混淆的配置

第9章通過Gradle打包函數庫到JCenter和Maven Central

9.1Maven Central 和 JCenter

9.1.1Maven Central

9.1.2JCenter

9.2Android Studio 獲取函數庫的原理

9.3上傳函數庫到 JCenter

9.3.1步驟一:在 Bintray 網站上注冊一個賬號

9.3.2步驟二:創建一個 Sonatype 賬號

9.3.3步驟三:在 Bintray 網站使能自動簽名

9.3.4步驟四:生成 POM 相關的信息

9.3.5步驟五:上傳函數庫到 Bintray

9.3.6步驟六: Bintray 用戶倉庫到 JCenter

9.3.7步驟七:同步函數庫到 Maven Central

第10章Builder模式詳解

10.1經典的 Builder 模式

10.2Builder 模式的變種

10.3變種 Builder 模式的自動化生成

10.4開源函數庫的例子

第11章注解在 Android 中的應用

11.1注解的定義

11.2標準注解

11.2.1編譯相關注解

11.2.2資源相關注解

11.2.3元注解

11.3運行時注解

11.4編譯時注解

11.4.1定義注解處理器

11.4.2注冊注解處理器

11.4.3android-apt插件

第12章ANR產生的原因及其定位分析

12.1ANR 產生的原因

12.2典型的 ANR 問題場景

12.3ANR 的定位和分析

12.3.1Logcat 日志信息

12.3.2traces.txt 日志信息

12.4ANR的避免和檢測

12.4.1StrictMode

12.4.2BlockCanary

第13章Android異步處理技術

13.1Thread

13.2HandlerThread

13.3AsyncQueryHandler

13.4IntentService

13.5Executor Framework

13.6AsyncTask

13.7Loader

13.8總結

第14章Android數據序列化方案研究

14.1Serializable

14.2Parcelable

14.3SQLiteDatabase

14.4SharedPreferences

14.5JSON

14.6Protocol Buffers及Nano-Proto-Buffers

14.7FlatBuffers

第15章Android WebView Java 和 JavaScript 交互詳解

15.1Java 調用 JavaScript

15.2JavaScript 調用 Java

第2篇系統架構篇

第16章MVP模式及其在Android中的實踐

16.1MVP 的基本概念

16.2MVP 與 MVC 的區別

16.3MVP 的開源實現

16.3.1Android-Architecture

16.3.2TODO-MVP

16.3.3TODO-MVP-Loaders

16.3.4TODO-MVP-Clean

16.3.5TODO-Databinding

16.3.6其他開源參考實現

16.4MVP 的好處

16.5MVP 存在的問題

第17章MVVM模式及Android DataBinding實戰

17.1Data Binding 表達式

17.2數據對象

17.3數據綁定

17.4事件綁定

第18章觀察者模式的拓展:事件總線

18.1為何要使用

18.2原理

18.3開源實現

18.3.1EventBus

18.3.2otto

18.4與觀察者模式及 Android 廣播的區別

第19章書寫簡潔規范的代碼

19.1Java 編碼規范

19.1.1源代碼文件的定義

19.1.2源代碼文件的結構

19.1.3遵循的格式

19.1.4命名約定

19.1.5Javadoc

19.2Android 命名規范

19.2.1布局文件的命名

19.2.2資源文件的命名

19.2.3類的命名

19.3CheckStyle 的使用

第20章基于開源項目搭建屬于自己的技術堆棧

20.1APP 的整體架構

20.2技術選型的考量點

20.3日志記錄能力

20.4JSON 解析能力

20.4.1gson

20.4.2jackson

20.4.3Fastjson

20.4.4LoganSquare

20.5數據庫操作能力

20.5.1ActiveAndroid

20.5.2ormlite

20.5.3greenDAO

20.5.4Realm

20.6網絡通信能力

20.6.1android-async-http

20.6.2OkHttp

20.6.3Volley

20.6.4Retrofit

20.7圖片緩存和顯示能力

20.7.1BitmapFun

20.7.2Picasso

20.7.3Glide

20.7.4Fresco

20.7.5Android-Universal-Image-Loader

第3篇經驗總結篇

第21章64K方法數限制原理與解決方案

21.164K 限制的原因

21.2使用 MultiDex 解決 64K 限制的問題

21.2.1Android 5.0 之前的版本

21.2.2Android 5.0 及之后的版本

21.3如何避免出現 64K 限制

21.4配置 MultiDex

21.5MultiDex Support Library 的局限性

21.6在開發階段優化 MultiDex 的構建

第22章Android 插件框架機制研究與實踐

22.1基本概念

22.1.1宿主和插件

22.1.2ClassLoader 機制

22.2開源框架

22.2.1android-pluginmgr

22.2.2dynamic-load-apk

22.2.3DynamicAPK

22.2.4DroidPlugin

22.2.5Small

第23章推送機制實現原理詳解

23.1推送的開源實現方案

23.1.1基于 XMPP 協議

23.1.2基于 MQTT 協議

23.2推送的第三方平臺

23.3自己實現推送功能

23.3.1長連接的建立(TCPConnectThread)

23.3.2數據的發送(TCPSendThread)

23.3.3數據的接收(TCPReceiveThread)

23.3.4心跳包的實現(TCPHeartBeatThread)

第24章APP 瘦身經驗總結

24.1APP 為什么變胖了

24.2從 APK 文件的結構說起

24.3優化圖片資源占用的空間

24.3.1無損壓縮 [ImageOptim]

24.3.2有損壓縮 [ImageAlpha]

24.3.3有損壓縮 [TinyPNG]

24.3.4PNG/JPEG 轉換為 WebP

24.3.5盡量使用 NinePatch 格式的 PNG 圖

24.4使用 Lint 刪除無用資源

24.5利用 Android Gradle 配置

24.5.1minifyEnable

24.5.2shrinkResources

24.5.3resConfigs

24.5.4ndk.abiFilters

24.6重構和優化代碼

24.7資源混淆

24.8插件化

第25章Android Crash 日志收集原理與實踐

25.1Java 層 Crash 捕獲機制

25.1.1基本原理

25.1.2線程信息

25.1.3SharedPreference 信息

25.1.4系統設置

21.1.5Logcat 中的日志記錄

25.1.6自定義 Log 文件中的內容

25.1.7MemInfo 信息

25.2Native 層 Crash 捕獲機制

25.3Crash 的上報

第4篇新技術篇

第26章函數式編程思想及其在Android中的應用

26.1代碼的簡化

26.2Operators 簡介

第27章依賴注入及其在Android中的應用

27.1基本概念

27.1.1構造函數注入

27.1.2Setter 函數注入

27.1.3接口注入

27.2為何需要框架

27.3開源框架的選擇

27.3.1ButterKnife

27.3.2RoboGuice

27.3.3Dagger

27.3.4Dagger2

27.3.5框架的對比

第28章Android世界的Swift:Kotlin在Android中的應用

28.1選擇 Kotlin 的原因

28.2Kotlin 的安裝和配置

28.3Kotlin 語言的特性

28.3.1可表達性

28.3.2空類型安全

28.3.3擴展函數

28.4Kotlin 的 Gradle 配置

28.5將 Java 類轉換成 Kotlin 類

28.6相關資料

第29章React Native For Android入門指南

29.1環境配置

29.1.1Homebrew

29.1.2nvm

29.1.3Node.js

29.1.4watchman

29.1.5flow

29.2Android 開發環境的要求

29.3React Native 工程配置

29.3.1安裝react-native

29.3.2生成工程

29.4Android Studio 工程概覽

29.5React Native 依賴庫修改為本地

在線預覽

1.1觸摸事件的類型

觸摸事件對應的是MotionEvent類,事件的類型主要有如下三種。yyACTION_DOWN:用戶手指的按下操作,一個按下操作標志著一次觸摸事件的開始。yyACTION_MOVE:用戶手指按壓屏幕后,在松開之前,如果移動的距離超過一定的閾值,那么會被判定為ACTION_MOVE操作,一般情況下,手指的輕微移動都會觸發一系列的移動事件。

yyACTION_UP:用戶手指離開屏幕的操作,一次抬起操作標志著一次觸摸事件的結束。在一次屏幕觸摸操作中,ACTION_DOWN和ACTION_UP這兩個事件是必需的,而ACTION_MOVE視情況而定,如果用戶僅僅是點擊了一下屏幕,那么可能只會監測到按下和抬起的動作。

1.2事件傳遞的三個階段

在了解了觸摸事件的三種主要類型之后,在講解Activity、View、ViewGroup的事件傳遞的具體實現之前,我們需要來了解本章開頭說的事件傳遞的三個階段。y分發(Dispatch):事件的分發對應著dispatchTouchEvent方法,在Android系統中,所有的觸摸事件都是通過這個方法來分發的,方法原型如下。ublicbooleandispatchTouchEvent(MotionEventev)在這個方法中,根據當前視圖的具體實現邏輯,來決定是直接消費這個事件還是將事件繼續分發給子視圖處理,方法返回值為true表示事件被當前視圖消費掉,不再繼續分發事件;方法返回值為super.dispatchTouchEvent表示繼續分發該事件。如果當前視圖是ViewGroup及其子類,則會調用onInterceptTouchEvent方法判定是否攔截該事件。yy攔截(Intercept):事件的攔截對應著onInterceptTouchEvent方法,這個方法只在ViewGroup及其子類中才存在,在View和Activity中是不存在的。方法的原型如下。

publicbooleanonInterceptTouchEvent(MotionEventev)同理,這個方法也是通過返回的布爾值來決定是否攔截對應的事件,根據具體的實現邏輯,返回true表示攔截這個事件,不繼續分發給子視圖,同時交由自身的onTouchEvent方法進行消費;返回false或者super.onInterceptTouchEvent表示不對事件進行攔截,需要繼續傳遞給子視圖。

yy消費(Consume):事件的消費對應著onTouchEvent方法,方法原型如下。publicbooleanonTouchEvent(MotionEventevent)該方法返回值為true表示當前視圖可以處理對應的事件,事件將不會向上傳遞給父視圖;返回值為false表示當前視圖不處理這個事件,事件會被傳遞給父視圖的onTouchEvent方法進行處理。

在Android系統中,擁有事件傳遞處理能力的類有以下三種。yyActivity:擁有dispatchTouchEvent和onTouchEvent兩個方法。

yyViewGroup:擁有dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent三個方法。yyView:擁有dispatchTouchEvent和onTouchEvent兩個方法。本章接下來將分別介紹View和ViewGroup的事件傳遞機制,Activity相關的內容穿插其中,將不再單獨介紹。

1.3View的事件傳遞機制

雖然ViewGroup是View的子類,但是這里所說的View專指除ViewGroup外的View控件,例如TextView、Button、CheckBox等,View控件本身已經是最小的單位,不能再作為其他View的容器。View控件擁有dispatchTouchEvent和onTouchEvent兩個方法。為了清楚地演示,我們首先來定義一個繼承TextView的類MyTextView,如下所示。我們將每個事件的觸發都打印了日志,以方便了解事件傳遞的流程。

同時定義一個MainActivity用來展示MyTextView,在這個Activity中,我們為MyTextView設置了點擊(onClick)和觸摸(onTouch)監聽,方便跟蹤了解事件傳遞的流程,代碼如下。

運行上面的代碼,點擊MyTextView,在Logcat中將打印出如下日志。

從上面的代碼和運行日志可以看出,dispatchTouchEvent、onTouchEvent這兩個方法的返回值可能存在以下三種情況。

yy直接返回false。

yy直接返回true。

yy返回父類的同名方法,例如super.dispatchTouchEvent。不同的返回值會導致事件傳遞流程相差甚遠,通過不斷修改這些方法的返回值并查看日志記錄,我們最終可以得到屏幕按下操作ACTION_DOWN事件的處理流程如圖1-1所示,ACTION_UP的流程與圖1-1類似,只不過事件類型不同而已,我們將不再一一列舉。

從上面的流程圖可以得出以下結論。

……

網友評論(不代表本站觀點)

來自1***l(**的評論:

mark209102741

2017-06-08 14:48:33
來自匿名用**的評論:

qqqqq

2017-11-11 07:47:46
來自***(匿**的評論:

vvvvVB不巴巴爸爸巴巴爸爸

2016-12-25 12:16:21
來自無昵稱**的評論:

2016-12-29 15:21:20
來自匿名用**的評論:

書不過。包裝能不能專業點書的角落邊上全都碰壞了

2017-01-09 18:45:44
來自蝴蝶93**的評論:

特別好特別好

2017-01-17 14:54:53
來自噼***5(**的評論:

涵蓋的知識點很多,但是排版過于寬松,內容過于粗略,知識點講解級不詳細,因此并不推薦購買

2017-02-16 09:49:56
來自匿名用**的評論:

進階還是可以的

2017-02-21 11:35:42
來自匿名用**的評論:

整體感覺不錯。

2017-02-27 10:57:54
來自匿名用**的評論:

很好書是正版的

2017-03-12 10:46:33
來自匿名用**的評論:

里面印刷有白頁,感覺正版就是這質量?

2017-04-23 21:58:37
來自匿名用**的評論:

好,這書不錯。

2017-04-24 10:16:58
來自匿名用**的評論:

不錯!不錯!不錯!

2017-05-04 07:54:54
來自匿名用**的評論:

送貨快。包裝好。沒有質量問題。

2017-05-28 16:46:46
來自何卓鋒**的評論:

2017-06-07 08:54:36
來自匿名用**的評論:

很好,很不錯,值得購買

2017-06-11 21:58:17
來自淼***(**的評論:

圖沒啥區別,我就不曬了。其實怎么說了,我以前不評論,但是因為我之前看評論,好像都說的不太好,代碼少啦,網上找的啦。其實本身你怎么可能在網上找不到書里的內容?如果你愿意完全可以不要買書,但書上的內容我感覺調理更清晰。至于有些人說關于代碼不詳細的問題,我特別要說明一下,這本書是給有基礎的人看的。不是給初學者,不是給初學者,不是給初學者,重要的事情說三遍。如果是剛學我建議買那個入門到精通,我就用的那個。還有一個就是買黑馬的視頻,淘寶有,兩三塊錢吧。

2017-06-16 23:58:12
來自s***d(**的評論:

內容豐富翔實

2017-07-02 16:47:45
來自x***2(**的評論:

寫的還不錯

2017-07-12 08:23:39
來自匿名用**的評論:

東西不錯,就是最后的快遞態度很差,打電話一直不接,中間還夾著幾次正在通話中,然后打過去通了還是不接,好不容易接了電話,說了兩句話就直接掛了,無語

2017-07-15 15:24:05
來自陳苗阿**的評論:

聽說這本書很好,剛收到,看了后再追評

2017-08-18 13:49:25
來自南***星**的評論:

非常的喜歡

2017-08-21 12:25:04
來自無昵稱**的評論:

還不錯,有些方面平時沒留意,受益了

2017-10-26 12:34:32
來自匿名用**的評論:

太簡單了,簡單東西簡單描述,還不入看百度百科詳細,比較復雜點的,一兩行文字帶過,估計作者不懂

2017-03-07 15:27:42
來自匿名用**的評論:

所講內容都是蜻蜓點水,沒什么代碼,感覺像是東抄西搬的,沒有真正結合實際項目

2017-02-09 08:04:25
來自無昵稱**的評論:

涵蓋面廣泛 羅列了各種流行框架 但是不是很詳細

2016-12-12 22:27:59
來自z***o(**的評論:

書很快就收到了,先給個好評吧,看了兩個章節,本書覆蓋的知識點很全面,但是介紹不是很詳細,項目開發中用到可能還需要再去深入研究吧

2016-12-26 16:49:05

免責聲明

更多出版社