內 容 提 要
本書深入淺出,詳細講解了Android開發的知識,主要內容包括:Android的體系架構、Android Studio、項目的創建、Android工程目錄、調試程序、界面的搭建;常用的控件和屬性、提示信息Toast和Snackbar、點擊事件3種寫法等;Activity之間的跳轉、Activity生命周期、Activity啟動模式等;數據存儲、網絡編程;圖片的處理;復雜控件的使用;Fragment、廣播接收者、Service、動畫等;以及Android新特性、Kotlin語言、性能優化、屏幕適配、自定義控件、JNI NDK開發等高級知識。并通過開發一個真實的項目讓讀者學以致用。
本書內容通俗易懂,比較適合初學者閱讀,也可以作為專業人員的工具書,以及大專院校相關專業師生的學習用書和培訓學校的教材。
12萬讀者的真實閱讀體驗,CSDN博客專家的zui新力作,基于新版的Android
循序漸進地講述開發過程中必-備的知識,宗旨是不重復開發一個輪子,在給大家講明原理的同時,介紹一些好的開發框架,這些框架能夠讓讀者很快上手開發完成一個應用。
本書前面部分知識點配有相應視頻,幫助讀者零基礎學通Android開發
作者微信答疑,解決讀者學習中的困難
于連林,CSDN博客專家,從事Android開發和教育多年,做過很多個項目,包括辦公類,O2O等類型,曾在培訓機構從事Android教育,有上千課時講課經驗,收到過許多好評。
目錄
第1章 初識Android1
1.1 Android是什么1
1.2 Android體系架構1
1.3 Android發展史4
第2章 選擇您的開發工具5
2.1 準備軟件,認識Android Studio5
2.1.1 什么是Android Studio5
2.1.2 為什么使用Android Studio6
2.2 安裝Android Studio6
2.2.1 安裝配置要求6
2.2.2 下載地址6
2.2.3 安裝JDK7
2.2.4 安裝Android Studio7
2.2.5 設置JDK和Android SDK
目錄14
2.3 項目的創建16
2.3.1 創建項目的步驟16
2.3.2 解決錯誤(沒有錯誤最好)19
2.4 Android Studio界面預覽21
2.5 常用設置22
2.5.1 設置主題22
2.5.2 設置字體和格式22
2.5.3 設置文件編碼24
2.5.4 設置快捷鍵24
2.5.5 其他設置26
2.6 常用快捷鍵26
2.7 Android工程目錄27
2.7.1 工程目錄介紹27
2.7.2 Gradle使用詳解28
2.7.3 app build.gradle28
2.8 SDK目錄介紹30
2.9 調試程序31
2.9.1 創建模擬器31
2.9.2 連接真實手機33
2.9.3 Genymotion模擬器34
2.10 程序啟動分析34
2.11 日志和注釋36
2.11.1 注釋37
2.11.2 日志37
2.11.3 設置Android Studio日志
顯示顏色38
2.11.4 實際開發中控制日志39
2.11.5 Logger的使用41
總結42
第3章 界面的搭建43
3.1 眼見皆View43
3.2 布局的搭建方式43
3.3 常用的控件和屬性44
3.3.1 TextView44
3.3.2 Button45
3.3.3 EditText46
3.3.4 ImageView47
3.3.5 ProgressBar49
3.4 布局的介紹50
3.4.1 LinearLayout(線性布局)50
3.4.2 RelativeLayout(相對布局)52
3.4.3 FrameLayout(幀布局)55
3.4.4 GridLayout(網格布局)56
3.4.5 CoordinatorLayout58
3.4.6 ConstraintLayout(約束
布局)61
3.5 提示信息Toast和Snackbar61
3.5.1 Toast使用詳解61
3.5.2 修改Toast位置63
3.5.3 自定義Toast布局63
3.5.4 避免內存泄露65
3.5.5 Snackbar65
3.6 點擊事件三種寫法68
3.6.1 通過匿名內部類或內部類
實現68
3.6.2 讓類實現接口69
3.6.3 在布局文件中注冊事件70
3.7 使用Lambda表達式代替匿名
內部類70
3.7.1 什么是lambda呢70
3.7.2 使用Lambda表達式71
3.8 AlertDialog提示對話框73
3.8.1 一般對話框75
3.8.2 Material Design風格的
對話框76
3.8.3 列表對話框78
3.8.4 單選按鈕對話框79
3.8.5 多選按鈕對話框79
3.8.6 自定義AlertDialog80
3.9 ProgressDialog81
總結83
第4章 Activity介紹84
4.1 Activity之間的跳轉84
4.1.1 顯示意圖84
4.1.2 隱式意圖86
4.1.3 隱式意圖的常見操作88
4.1.4 IntentFilter匹配規則89
4.2 Activity之間傳遞數據92
4.2.1 通過Intent傳遞數據92
4.2.2 靜態工廠設計模式傳遞
數據93
4.2.3 返回數據給之前的Activity93
4.3 Android 6.0權限的管理95
4.3.1 Android 6.0新的權限機制96
4.3.2 申請權限96
4.3.3 第三方庫RxPermissions100
4.4 Activity生命周期101
4.4.1 生命周期的方法101
4.4.2 Activity銷毀時保存數據102
4.4.3 鎖定橫豎屏103
4.4.4 開發時注意事項104
4.5 Activity任務棧104
4.6 Activity啟動模式105
4.6.1 standard105
4.6.2 singleTop106
4.6.3 singleTask106
4.6.4 singleInstance107
4.6.5 統一管理Activity108
4.7 Toolbar和Navigation Drawer109
4.7.1 AppBar的簡介109
4.7.2 創建菜單111
4.7.3 Toolbar112
4.7.4 Toolbar遇上Navigation
Drawer114
4.8 主題樣式設置118
總結120
第5章 數據存儲121
5.1 SharedPreference121
5.2 MD5加密123
5.3 文件存儲數據124
5.3.1 保存到手機內存(Internal
Storage)124
5.3.2 SD卡存儲(External
Storage)127
5.4 SQLite存儲132
5.4.1 創建數據庫132
5.4.2 升級數據庫135
5.4.3 數據庫增刪改查(CURD)137
5.4.4 SQLite數據庫的事務操作144
5.5 常見的數據庫框架146
總結146
第6章 網絡編程148
6.1 HTTP協議148
6.1.1 URL簡介148
6.1.2 HTTP簡介149
6.1.3 GET和POST對比151
6.2 HttpURLConnection151
6.2.1 為什么廢棄HttpClient151
6.2.2 使用HttpURLConnection
聯網152
6.3 多線程編程154
6.3.1 線程的同步和異步154
6.3.2 AsycTask158
6.3.3 RxJava161
6.4 網絡請求實例164
6.5 JSON解析168
6.5.1 使用Android原生方式解析
JSON169
6.5.2 Gson的使用170
6.5.3 插件GsonFormat快速實現
JavaBean174
6.5.4 完成請求實例176
6.6 網絡請求框架Retrofit179
6.6.1 使用Retrofit179
6.6.2 常用的注解181
6.6.3 完成請求案例181
6.6.4 RxJava和Retrofit結合183
6.7 WebView184
6.7.1 WebView配置186
6.7.2 WebViewClient方法187
6.7.3 設置WebChromeClient189
6.7.4 WebView常用的方法190
6.7.5 WebView模板代碼191
總結196
第7章 圖片的處理197
7.1 Bitmap和Drawable197
7.2 大圖的加載199
7.3 圖片加水印202
7.4 圖片特效,Matrix205
7.4.1 縮放205
7.4.2 倒影、鏡面207
7.4.3 旋轉208
7.4.4 位移208
7.5 圖片顏色處理打造自己的美圖
秀秀209
7.5.1 顏色過濾器
ColorMatrixColorFilter209
7.5.2 實現圖片美化功能210
7.6 案例隨手涂鴉214
7.7 加載網絡圖片217
7.7.1 網絡圖片的緩存策略217
7.7.2 圖片加載庫Picasso的使用218
總結219
第8章 復雜控件的使用220
8.1 ListView220
8.1.1 初識ListView221
8.1.2 定制ListView條目的界面222
8.1.3 優化ListView225
8.1.4 ListView的點擊事件226
8.1.5 ListView常用的屬性228
8.2 GridView229
8.3 RecyclerView231
8.3.1 初識RecyclerView231
8.3.2 使用RecyclerView232
8.3.3 不同的布局排列方式234
8.3.4 RecyclerView添加點擊
事件236
8.3.5 RecyclerView添加刪除
數據237
8.3.6 下拉刷新
SwipeRefreshLayout237
8.4 CardView239
8.5 ViewPager241
8.6 BottomNavigationView(底部
導航)243
8.7 TabLayout246
8.7.1 TabLayout使用246
8.7.2 TabLayout自定義條目
樣式249
總結250
第9章 探索Fragment251
9.1 使用Fragment252
9.1.1 Fragment的生命周期252
9.1.2 創建Fragment252
9.1.3 向Activity添加Fragment254
9.1.4 管理片段256
9.1.5 Fragment的向下兼容257
9.2 FragmentTabHost實現底部標簽257
9.3 ViewPager和Fragment結合259
總結273
第10章 廣播接收者274
10.1 廣播簡介274
10.2 實現一個BroadcastReceiver275
10.3 發送自定義廣播279
10.4 桌面快捷方式283
總結285
第11章 Service介紹286
11.1 服務的基本用法286
11.1.1 創建服務286
11.1.2 啟動和停止服務287
11.1.3 綁定服務289
11.1.4 服務的生命周期292
11.2 IntentService292
11.3 Service和BroadCastReceiver結合
使用的案例(兼容Android 7.0)294
11.3.1 Android 7.0錯誤原因297
11.3.2 使用FileProvider298
總結300
第12章 動畫301
12.1 補間動畫(Tween Animation)301
12.2.1 AlphaAnimation(透明度
動畫)302
12.2.2 ScaleAnimation(縮放
動畫)304
12.2.3 TranslateAnimation(平移
動畫)305
12.2.4 RotateAnimation(旋轉
動畫)306
12.2 逐幀動畫(Frame Animation)308
12.3 屬性動畫310
總結313
第13章 新特性314
13.1 Android 7.0分屏開發314
13.1.1 如何分屏呢315
13.1.2 多窗口生命周期315
13.1.3 針對多窗口進行配置316
13.1.4 多窗口模式中運行應用
注意事項316
13.1.5 在多窗口模式中啟動新
Activity317
13.1.6 支持拖放318
13.2 Android 7.0快速設定318
13.3 約束布局ConstraintLayout321
13.3.1 ConstraintLayout簡介321
13.3.2 添加約束布局322
13.3.3 使用約束布局322
13.3.4 添加約束323
13.3.5 使用自動連接和約束推斷325
13.3.6 快速對齊Align326
13.4 使用Kotlin語言開發Android326
總結330
第14章 性能優化331
14.1 性能檢測331
14.1.1 檢測內存泄露331
14.1.2 LeakCanary334
14.1.3 追蹤內存分配335
14.1.4 查詢方法執行的時間335
14.2 過度繪制(OverDraw)336
14.2.1 過度繪制概念336
14.2.2 追蹤過度繪制336
14.2.3 去掉不合理背景337
14.2.4 不合理的XML布局對
繪制的影響338
14.3 避免ANR338
14.3.1 ANR分析339
14.3.2 ANR解決方式341
總結341
第15章 屏幕適配342
15.1 Android屏幕適配出現的原因342
15.2 相關重要概念344
15.2.1 屏幕尺寸344
15.2.2 屏幕分辨率344
15.2.3 屏幕像素密度344
15.2.4 屏幕尺寸、分辨率、像素
密度三者關系344
15.2.5 dip345
15.2.6 sp345
15.3 尺寸適配解決方案346
15.3.1 布局適配346
15.3.2 尺寸(size)限定符347
15.3.3 最小寬度(Smallest-width)
限定符348
15.3.4 使用布局別名349
15.3.5 屏幕方向(Orientation)
限定符350
15.3.6 布局組件匹配352
15.3.7 Layout_weight詳解352
15.3.8 圖片資源匹配355
15.3.9 .9的制作355
15.3.10 用戶界面流程匹配357
15.4 屏幕密度適配359
15.4.1 布局控件適配359
15.4.2 百分比布局360
15.4.3 約束布局362
總結362
第16章 自定義控件363
16.1 自定義控件簡介363
16.2 View的生命周期364
16.2.1 構造函數365
16.2.2 onAttachedToWindow369
16.2.3 onMeasure370
16.2.4 onLayout372
16.2.5 onDraw372
16.2.6 View更新373
16.2.7 動畫374
總結374
第17章 JNI NDK開發375
17.1 NDK配置(最新的CMake
方式)375
17.1.1 下載376
17.1.2 創建項目376
17.1.3 運行項目378
17.1.4 手動添加native方法379
總結380
第18章 開發一個真實的項目381
18.1 項目需求分析381
18.2 創建項目382
18.3 界面實現383
18.3.1 啟動界面383
18.3.2 引導頁面385
18.3.3 主界面388
18.3.4 列表界面390
18.4 請求網絡395
18.5 新聞列表和詳情400
18.6 完成整個項目409
總結412