內(nèi) 容 提 要
本書深入淺出,詳細(xì)講解了Android開發(fā)的知識,主要內(nèi)容包括:Android的體系架構(gòu)、Android Studio、項目的創(chuàng)建、Android工程目錄、調(diào)試程序、界面的搭建;常用的控件和屬性、提示信息Toast和Snackbar、點擊事件3種寫法等;Activity之間的跳轉(zhuǎn)、Activity生命周期、Activity啟動模式等;數(shù)據(jù)存儲、網(wǎng)絡(luò)編程;圖片的處理;復(fù)雜控件的使用;Fragment、廣播接收者、Service、動畫等;以及Android新特性、Kotlin語言、性能優(yōu)化、屏幕適配、自定義控件、JNI NDK開發(fā)等高級知識。并通過開發(fā)一個真實的項目讓讀者學(xué)以致用。
本書內(nèi)容通俗易懂,比較適合初學(xué)者閱讀,也可以作為專業(yè)人員的工具書,以及大專院校相關(guān)專業(yè)師生的學(xué)習(xí)用書和培訓(xùn)學(xué)校的教材。
12萬讀者的真實閱讀體驗,CSDN博客專家的zui新力作,基于新版的Android
循序漸進(jìn)地講述開發(fā)過程中必-備的知識,宗旨是不重復(fù)開發(fā)一個輪子,在給大家講明原理的同時,介紹一些好的開發(fā)框架,這些框架能夠讓讀者很快上手開發(fā)完成一個應(yīng)用。
本書前面部分知識點配有相應(yīng)視頻,幫助讀者零基礎(chǔ)學(xué)通Android開發(fā)
作者微信答疑,解決讀者學(xué)習(xí)中的困難
于連林,CSDN博客專家,從事Android開發(fā)和教育多年,做過很多個項目,包括辦公類,O2O等類型,曾在培訓(xùn)機構(gòu)從事Android教育,有上千課時講課經(jīng)驗,收到過許多好評。
目錄
第1章 初識Android1
1.1 Android是什么1
1.2 Android體系架構(gòu)1
1.3 Android發(fā)展史4
第2章 選擇您的開發(fā)工具5
2.1 準(zhǔn)備軟件,認(rèn)識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 設(shè)置JDK和Android SDK
目錄14
2.3 項目的創(chuàng)建16
2.3.1 創(chuàng)建項目的步驟16
2.3.2 解決錯誤(沒有錯誤最好)19
2.4 Android Studio界面預(yù)覽21
2.5 常用設(shè)置22
2.5.1 設(shè)置主題22
2.5.2 設(shè)置字體和格式22
2.5.3 設(shè)置文件編碼24
2.5.4 設(shè)置快捷鍵24
2.5.5 其他設(shè)置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 調(diào)試程序31
2.9.1 創(chuàng)建模擬器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 設(shè)置Android Studio日志
顯示顏色38
2.11.4 實際開發(fā)中控制日志39
2.11.5 Logger的使用41
總結(jié)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(網(wǎng)格布局)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 避免內(nèi)存泄露65
3.5.5 Snackbar65
3.6 點擊事件三種寫法68
3.6.1 通過匿名內(nèi)部類或內(nèi)部類
實現(xiàn)68
3.6.2 讓類實現(xiàn)接口69
3.6.3 在布局文件中注冊事件70
3.7 使用Lambda表達(dá)式代替匿名
內(nèi)部類70
3.7.1 什么是lambda呢70
3.7.2 使用Lambda表達(dá)式71
3.8 AlertDialog提示對話框73
3.8.1 一般對話框75
3.8.2 Material Design風(fēng)格的
對話框76
3.8.3 列表對話框78
3.8.4 單選按鈕對話框79
3.8.5 多選按鈕對話框79
3.8.6 自定義AlertDialog80
3.9 ProgressDialog81
總結(jié)83
第4章 Activity介紹84
4.1 Activity之間的跳轉(zhuǎn)84
4.1.1 顯示意圖84
4.1.2 隱式意圖86
4.1.3 隱式意圖的常見操作88
4.1.4 IntentFilter匹配規(guī)則89
4.2 Activity之間傳遞數(shù)據(jù)92
4.2.1 通過Intent傳遞數(shù)據(jù)92
4.2.2 靜態(tài)工廠設(shè)計模式傳遞
數(shù)據(jù)93
4.2.3 返回數(shù)據(jù)給之前的Activity93
4.3 Android 6.0權(quán)限的管理95
4.3.1 Android 6.0新的權(quán)限機制96
4.3.2 申請權(quán)限96
4.3.3 第三方庫RxPermissions100
4.4 Activity生命周期101
4.4.1 生命周期的方法101
4.4.2 Activity銷毀時保存數(shù)據(jù)102
4.4.3 鎖定橫豎屏103
4.4.4 開發(fā)時注意事項104
4.5 Activity任務(wù)棧104
4.6 Activity啟動模式105
4.6.1 standard105
4.6.2 singleTop106
4.6.3 singleTask106
4.6.4 singleInstance107
4.6.5 統(tǒng)一管理Activity108
4.7 Toolbar和Navigation Drawer109
4.7.1 AppBar的簡介109
4.7.2 創(chuàng)建菜單111
4.7.3 Toolbar112
4.7.4 Toolbar遇上Navigation
Drawer114
4.8 主題樣式設(shè)置118
總結(jié)120
第5章 數(shù)據(jù)存儲121
5.1 SharedPreference121
5.2 MD5加密123
5.3 文件存儲數(shù)據(jù)124
5.3.1 保存到手機內(nèi)存(Internal
Storage)124
5.3.2 SD卡存儲(External
Storage)127
5.4 SQLite存儲132
5.4.1 創(chuàng)建數(shù)據(jù)庫132
5.4.2 升級數(shù)據(jù)庫135
5.4.3 數(shù)據(jù)庫增刪改查(CURD)137
5.4.4 SQLite數(shù)據(jù)庫的事務(wù)操作144
5.5 常見的數(shù)據(jù)庫框架146
總結(jié)146
第6章 網(wǎng)絡(luò)編程148
6.1 HTTP協(xié)議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
聯(lián)網(wǎng)152
6.3 多線程編程154
6.3.1 線程的同步和異步154
6.3.2 AsycTask158
6.3.3 RxJava161
6.4 網(wǎng)絡(luò)請求實例164
6.5 JSON解析168
6.5.1 使用Android原生方式解析
JSON169
6.5.2 Gson的使用170
6.5.3 插件GsonFormat快速實現(xiàn)
JavaBean174
6.5.4 完成請求實例176
6.6 網(wǎng)絡(luò)請求框架Retrofit179
6.6.1 使用Retrofit179
6.6.2 常用的注解181
6.6.3 完成請求案例181
6.6.4 RxJava和Retrofit結(jié)合183
6.7 WebView184
6.7.1 WebView配置186
6.7.2 WebViewClient方法187
6.7.3 設(shè)置WebChromeClient189
6.7.4 WebView常用的方法190
6.7.5 WebView模板代碼191
總結(jié)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 旋轉(zhuǎn)208
7.4.4 位移208
7.5 圖片顏色處理打造自己的美圖
秀秀209
7.5.1 顏色過濾器
ColorMatrixColorFilter209
7.5.2 實現(xiàn)圖片美化功能210
7.6 案例隨手涂鴉214
7.7 加載網(wǎng)絡(luò)圖片217
7.7.1 網(wǎng)絡(luò)圖片的緩存策略217
7.7.2 圖片加載庫Picasso的使用218
總結(jié)219
第8章 復(fù)雜控件的使用220
8.1 ListView220
8.1.1 初識ListView221
8.1.2 定制ListView條目的界面222
8.1.3 優(yōu)化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添加刪除
數(shù)據(jù)237
8.3.6 下拉刷新
SwipeRefreshLayout237
8.4 CardView239
8.5 ViewPager241
8.6 BottomNavigationView(底部
導(dǎo)航)243
8.7 TabLayout246
8.7.1 TabLayout使用246
8.7.2 TabLayout自定義條目
樣式249
總結(jié)250
第9章 探索Fragment251
9.1 使用Fragment252
9.1.1 Fragment的生命周期252
9.1.2 創(chuàng)建Fragment252
9.1.3 向Activity添加Fragment254
9.1.4 管理片段256
9.1.5 Fragment的向下兼容257
9.2 FragmentTabHost實現(xiàn)底部標(biāo)簽257
9.3 ViewPager和Fragment結(jié)合259
總結(jié)273
第10章 廣播接收者274
10.1 廣播簡介274
10.2 實現(xiàn)一個BroadcastReceiver275
10.3 發(fā)送自定義廣播279
10.4 桌面快捷方式283
總結(jié)285
第11章 Service介紹286
11.1 服務(wù)的基本用法286
11.1.1 創(chuàng)建服務(wù)286
11.1.2 啟動和停止服務(wù)287
11.1.3 綁定服務(wù)289
11.1.4 服務(wù)的生命周期292
11.2 IntentService292
11.3 Service和BroadCastReceiver結(jié)合
使用的案例(兼容Android 7.0)294
11.3.1 Android 7.0錯誤原因297
11.3.2 使用FileProvider298
總結(jié)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(旋轉(zhuǎn)
動畫)306
12.2 逐幀動畫(Frame Animation)308
12.3 屬性動畫310
總結(jié)313
第13章 新特性314
13.1 Android 7.0分屏開發(fā)314
13.1.1 如何分屏呢315
13.1.2 多窗口生命周期315
13.1.3 針對多窗口進(jìn)行配置316
13.1.4 多窗口模式中運行應(yīng)用
注意事項316
13.1.5 在多窗口模式中啟動新
Activity317
13.1.6 支持拖放318
13.2 Android 7.0快速設(shè)定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語言開發(fā)Android326
總結(jié)330
第14章 性能優(yōu)化331
14.1 性能檢測331
14.1.1 檢測內(nèi)存泄露331
14.1.2 LeakCanary334
14.1.3 追蹤內(nèi)存分配335
14.1.4 查詢方法執(zhí)行的時間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
總結(jié)341
第15章 屏幕適配342
15.1 Android屏幕適配出現(xiàn)的原因342
15.2 相關(guān)重要概念344
15.2.1 屏幕尺寸344
15.2.2 屏幕分辨率344
15.2.3 屏幕像素密度344
15.2.4 屏幕尺寸、分辨率、像素
密度三者關(guān)系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
總結(jié)362
第16章 自定義控件363
16.1 自定義控件簡介363
16.2 View的生命周期364
16.2.1 構(gòu)造函數(shù)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
總結(jié)374
第17章 JNI NDK開發(fā)375
17.1 NDK配置(最新的CMake
方式)375
17.1.1 下載376
17.1.2 創(chuàng)建項目376
17.1.3 運行項目378
17.1.4 手動添加native方法379
總結(jié)380
第18章 開發(fā)一個真實的項目381
18.1 項目需求分析381
18.2 創(chuàng)建項目382
18.3 界面實現(xiàn)383
18.3.1 啟動界面383
18.3.2 引導(dǎo)頁面385
18.3.3 主界面388
18.3.4 列表界面390
18.4 請求網(wǎng)絡(luò)395
18.5 新聞列表和詳情400
18.6 完成整個項目409
總結(jié)412