第一行代碼 : Android, 2/e 第一行代码:Android(第2版)

郭霖

買這商品的人也買了...

商品描述

<內容簡介>

本書被Android開發者譽為Android學習經典。全書系統全面、循序漸進地介紹了Android軟件開發的知識、經驗和技巧。
第2版基於Android 7.0對第1版進行了全面更新,將所有知識點都在新的Android系統上進行重新適配,使用全新的Android Studio開發工具代替之前的Eclipse,並添加了對Material Design、運行時權限、Gradle、RecyclerView、百分比佈局、OkHttp、Lambda表達式等全新知識點的詳細講解。
本書內容通俗易懂,由淺入深,既適合Android初學者的入門,也適合Android開發者的進階。


<章節目錄>

第1章 開始啟程——你的第一行Android代碼 1
1.1 瞭解全貌——Android王國簡介 2
1.1.1 Android系統架構 2
1.1.2 Android已發布的版本 3
1.1.3 Android應用開發特色 4
1.2 手把手帶你搭建開發環境 5
1.2.1 準備所需要的工具 5
1.2.2 搭建開發環境 5
1.3 創建你的第一個Android項目 9
1.3.1 創建HelloWorld項目 9
1.3.2 啟動模擬器 12
1.3.3 運行HelloWorld 15
1.3.4 分析你的第一個Android程序 16
1.3.5 詳解項目中的資源 22
1.3.6 詳解build.gradle文件 23
1.4 前行必備——掌握日誌工具的使用 26
1.4.1 使用Android的日誌工具Log 26
1.4.2 為什麼使用Log而不使用System.out 27
1.5 小結與點評 29
第2章 先從看得到的入手——探究活動 30
2.1 活動是什麼 30
2.2 活動的基本用法 30
2.2.1 手動創建活動 31
2.2.2 創建和加載佈局 32
2.2.3 在AndroidManifest文件中註冊 35
2.2.4 在活動中使用Toast 37
2.2.5 在活動中使用Menu 38
2.2.6 銷毀一個活動 40
2.3 使用Intent在活動之間穿梭 41
2.3.1 使用顯式Intent 41
2.3.2 使用隱式Intent 44
2.3.3 更多隱式Intent的用法 46
2.3.4 向下一個活動傳遞數據 50
2.3.5 返回數據給上一個活動 51
2.4 活動的生命周期 53
2.4.1 返回棧 53
2.4.2 活動狀態 54
2.4.3 活動的生存期 55
2.4.4 體驗活動的生命周期 56
2.4.5 活動被回收了怎麼辦 62
2.5 活動的啟動模式 63
2.5.1 standard 64
2.5.2 singleTop 65
2.5.3 singleTask 67
2.5.4 singleInstance 68
2.6 活動的最佳實踐 71
2.6.1 知曉當前是在哪一個活動 71
2.6.2 隨時隨地退出程序 72
2.6.3 啟動活動的最佳寫法 74
2.7 小結與點評 75
第3章 軟件也要拼臉蛋——UI開發的點點滴滴 76
3.1 如何編寫程序界面 76
3.2 常用控件的使用方法 77
3.2.1 TextView 77
3.2.2 Button 80
3.2.3 EditText 82
3.2.4 ImageView 86
3.2.5 ProgressBar 88
3.2.6 AlertDialog 91
3.2.7 ProgressDialog 93
3.3 詳解4種基本佈局 94
3.3.1 線性佈局 94
3.3.2 相對佈局 100
3.3.3 幀佈局 103
3.3.4 百分比佈局 105
3.4 系統控件不夠用?創建自定義控件 108
3.4.1 引入佈局 109
3.4.2 創建自定義控件 111
3.5 最常用和最難用的控件——ListView 113
3.5.1 ListView的簡單用法 114
3.5.2 定製ListView的界面 115
3.5.3 提升ListView的運行效率 119
3.5.4 ListView的點擊事件 120
3.6 更強大的滾動控件——RecyclerView 122
3.6.1 RecyclerView的基本用法 122
3.6.2 實現橫向滾動和瀑布流佈局 125
3.6.3 RecyclerView的點擊事件 130
3.7 編寫界面的最佳實踐 132
3.7.1 製作Nine-Patch圖片 132
3.7.2 編寫精美的聊天界面 135
3.8 小結與點評 141
第4章 手機平板要兼顧——探究碎片 142
4.1 碎片是什麼 142
4.2 碎片的使用方式 144
4.2.1 碎片的簡單用法 144
4.2.2 動態添加碎片 147
4.2.3 在碎片中模擬返回棧 150
4.2.4 碎片和活動之間進行通信 151
4.3 碎片的生命周期 151
4.3.1 碎片的狀態和回調 151
4.3.2 體驗碎片的生命周期 153
4.4 動態加載佈局的技巧 156
4.4.1 使用限定符 156
4.4.2 使用最小寬度限定符 159
4.5 碎片的最佳實踐——一個簡易版的新聞應用 160
4.6 小結與點評 169
第5章 全局大喇叭——詳解廣播機制 170
5.1 廣播機制簡介 170
5.2 接收系統廣播 171
5.2.1 動態註冊監聽網絡變化 171
5.2.2 靜態註冊實現開機啟動 174
5.3 發送自定義廣播 177
5.3.1 發送標準廣播 177
5.3.2 發送有序廣播 179
5.4 使用本地廣播 183
5.5 廣播的最佳實踐——實現強制下線功能 185
5.6 Git時間——初識版本控制工具 192
5.6.1 安裝Git 192
5.6.2 創建代碼倉庫 193
5.6.3 提交本地代碼 195
5.7 小結與點評 195
第6章 數據存儲全方案——詳解持久化技術 196
6.1 持久化技術簡介 196
6.2 文件存儲 197
6.2.1 將數據存儲到文件中 197
6.2.2 從文件中讀取數據 201
6.3 SharedPreferences存儲 203
6.3.1 將數據存儲到SharedPreferences中 203
6.3.2 從SharedPreferences中讀取數據 206
6.3.3 實現記住密碼功能 208
6.4 SQLite數據庫存儲 211
6.4.1 創建數據庫 211
6.4.2 升級數據庫 216
6.4.3 添加數據 219
6.4.4 更新數據 222
6.4.5 刪除數據 224
6.4.6 查詢數據 225
6.4.7 使用SQL操作數據庫 228
6.5 使用LitePal操作數據庫 229
6.5.1 LitePal簡介 229
6.5.2 配置LitePal 230
6.5.3 創建和升級數據庫 231
6.5.4 使用LitePal添加數據 236
6.5.5 使用LitePal更新數據 237
6.5.6 使用LitePal刪除數據 240
6.5.7 使用LitePal查詢數據 241
6.6 小結與點評 243
第7章 跨程序共享數據——探究內容提供器 244
7.1 內容提供器簡介 244
7.2 運行時權限 245
7.2.1 Android權限機制詳解 245
7.2.2 在程序運行時申請權限 249
7.3 訪問其他程序中的數據 254
7.3.1 ContentResolver的基本用法 254
7.3.2 讀取系統聯系人 256
7.4 創建自己的內容提供器 260
7.4.1 創建內容提供器的步驟 261
7.4.2 實現跨程序數據共享 265
7.5 Git時間——版本控制工具進階 275
7.5.1 忽略文件 275
7.5.2 查看修改內容 276
7.5.3 撤銷未提交的修改 278
7.5.4 查看提交記錄 279
7.6 小結與點評 280
第8章 豐富你的程序——運用手機多媒體 281
8.1 將程序運行到手機上 281
8.2 使用通知 283
8.2.1 通知的基本用法 283
8.2.2 通知的進階技巧 289
8.2.3 通知的高級功能 291
8.3 調用攝像頭和相冊 293
8.3.1 調用攝像頭拍照 294
8.3.2 從相冊中選擇照片 298
8.4 播放多媒體文件 303
8.4.1 播放音頻 303
8.4.2 播放視頻 307
8.5 小結與點評 311
第9章 看看精彩的世界——使用網絡技術 312
9.1 WebView的用法 312
9.2 使用HTTP協議訪問網絡 314
9.2.1 使用HttpURLConnection 315
9.2.2 使用OkHttp 319
9.3 解析XML格式數據 321
9.3.1 Pull解析方式 324
9.3.2 SAX解析方式 326
9.4 解析JSON格式數據 329
9.4.1 使用JSONObject 330
9.4.2 使用GSON 331
9.5 網絡編程的最佳實踐 334
9.6 小結與點評 338
第10章 後台默默的勞動者——探究服務 339
10.1 服務是什麼 339
10.2 Android多線程編程 340
10.2.1 線程的基本用法 340
10.2.2 在子線程中更新UI 341
10.2.3 解析異步消息處理機制 345
10.2.4 使用AsyncTask 347
10.3 服務的基本用法 349
10.3.1 定義一個服務 349
10.3.2 啟動和停止服務 352
10.3.3 活動和服務進行通信 355
10.4 服務的生命周期 359
10.5 服務的更多技巧 359
10.5.1 使用前臺服務 359
10.5.2 使用IntentService 361
10.6 服務的最佳實踐——完整版的下載示例 365
10.7 小結與點評 378
第11章 Android特色開發——基於位置的服務 379
11.1 基於位置的服務簡介 379
11.2 申請API Key 380
11.3 使用百度定位 384
11.3.1 準備LBS SDK 384
11.3.2 確定自己位置的經緯度 386
11.3.3 選擇定位模式 391
11.3.4 看得懂的位置信息 393
11.4 使用百度地圖 395
11.4.1 讓地圖顯示出來 395
11.4.2 移動到我的位置 397
11.4.3 讓“我”顯示在地圖上 400
11.5 Git時間——版本控制工具的高級用法 402
11.5.1 分支的用法 403
11.5.2 與遠程版本庫協作 404
11.6 小結與點評 406
第12章 最佳的UI體驗——MaterialDesign實戰 407
12.1 什麼是Material Design 407
12.2 Toolbar 408
12.3 滑動菜單 415
12.3.1 DrawerLayout 415
12.3.2 NavigationView 418
12.4 懸浮按鈕和可交互提示 423
12.4.1 FloatingActionButton 424
12.4.2 Snackbar 427
12.4.3 CoordinatorLayout 428
12.5 卡片式佈局 430
12.5.1 CardView 431
12.5.2 AppBarLayout 437
12.6 下拉刷新 440
12.7 可折疊式標題欄 443
12.7.1 CollapsingToolbarLayout 443
12.7.2 充分利用系統狀態欄空間 453
12.8 小結與點評 456
第13章 繼續進階——你還應該掌握的高級技巧 457
13.1 全局獲取Context的技巧 457
13.2 使用Intent傳遞對像 461
13.2.1 Serializable方式 461
13.2.2 Parcelable方式 463
13.3 定製自己的日誌工具 464
13.4 調試Android程序 466
13.5 創建定時任務 469
13.5.1 Alarm機制 469
13.5.2 Doze模式 471
13.6 多窗口模式編程 472
13.6.1 進入多窗口模式 473
13.6.2 多窗口模式下的生命周期 475
13.6.3 禁用多窗口模式 479
13.7 Lambda表達式 481
13.8 總結 485
第14章 進入實戰——開發酷歐天氣 486
14.1 功能需求及技術可行性分析 486
14.2 Git時間——將代碼托管到GitHub上 489
14.3 創建數據庫和表 494
14.4 遍歷全國省市縣數據 499
14.5 顯示天氣信息 509
14.5.1 定義GSON實體類 509
14.5.2 編寫天氣界面 514
14.5.3 將天氣顯示到界面上 520
14.5.4 獲取必應每日一圖 526
14.6 手動更新天氣和切換城市 532
14.6.1 手動更新天氣 532
14.6.2 切換城市 535
14.7 後台自動更新天氣 540
14.8 修改圖標和名稱 542
14.9 你還可以做的事情 543
第15章 最後一步——將應用發布到360應用商店 545
15.1 生成正式簽名的APK文件 545
15.1.1 使用Android Studio生成 546
15.1.2 使用Gradle生成 548
15.1.3 生成多渠道APK文件 551
15.2 申請360開發者賬號 554
15.3 發布應用程序 556
15.4 嵌入廣告進行盈利 560
15.4.1 註冊騰訊廣告聯盟賬號 560
15.4.2 新建媒體和廣告位 562
15.4.3 接入廣告SDK 564
15.4.4 重新發布應用程序 569
15.5 結束語 570