第一行代碼(第2版)

第一行代碼(第2版)

第一行代碼 第二版,被Android開發者譽為“Android學習第一書”。全書系統全面、循序漸進地介紹了Android軟體開發的必備知識、經驗和技巧。 《第一行代碼》(第2版)基於Android 7.0對第1版進行了全面更新,將所有知識點都在最新的Android系統上進行了重新適配,使用全新的Android Studio開發工具代替之前的Eclipse,並添加了對Material Design、運行時許可權、多視窗模式、Gradle、RecyclerView、百分比布局、OkHttp、Lambda表達式等全新知識點的詳細講解。 本書內容通俗易懂,由淺入深,既是Android初學者的入門必備,也是Android開發者的進階首選。

內容簡介

本書被Android開發者譽為Android學習第一書。全書系統全面、循序漸進地介紹了Android軟體開發的必備知識、經驗和技巧。由人民郵電出版社圖靈公司於2016年11月出版。
《第一行代碼》(第2版)基於Android 7.0對第1版進行了全面更新,將所有知識點都在最新的Android系統上進行了重新適配,使用全新的Android Studio開發工具代替之前的Eclipse,並添加了對Material Design、運行時許可權、多視窗模式、Gradle、RecyclerView、百分比布局、OkHttp、Lambda表達式等全新知識點的詳細講解。

本書內容通俗易懂,由淺入深,既是Android初學者的入門必備,也是Android開發者的進階首選。

作者簡介

郭霖,Android軟體開發工程師。從事Android開發工作6年,有著豐富的項目實戰經驗,負責及參與開發過多款移動套用與遊戲,同時還是LitePal開源框架的作者,對Android系統架構及套用層開發有著深入的理解。
2013年3月開始,在CSDN上發表Android技術相關博文,很快獲得了大量網友的好評。目前部落格訪問量已超過500萬次,評論超過10000條。榮獲CSDN認證專家,並被連續評選為CSDN 2013、2014、2015年度部落格之星。

第二版的變化

由於第2版修改內容繁多,因此這裡我只列舉出最主要的變化。首先是開發工具上的改變,本書第1版使用的開發工具是Eclipse,而第2版使用了目前最新的Android Studio 2.2版本。另外,本書第1版是基於Android 4.x系統的,而第2版是基於Android 7.0系統的,其中囊括了新系統中的諸多知識點,包括Android 5.0系統中引入的Material Design、Android 6.0系統中引入的運行時許可權和Doze模式、Android 7.0系統中引入的多視窗模式等。

除此之外,第2版還加入了Gradle、RecyclerView、百分比布局、OkHttp、Lambda表達式等全新知識點的講解,內容將前所未有地充實。

讀者對象

本書內容通俗易懂,由淺入深,既適合初學者閱讀,也同樣適合專業人員。學習本書內容之前,你並不需要有任何的Android基礎,但是你需要有一定的Java基礎,因為Android開發都是使用Java語言的,而本書並不會去專門介紹Java方面的知識。

閱讀本書時,你可以根據自身的情況來決定如何閱讀。如果你是初學者的話,建議你從第1章開始循序漸進地閱讀,這樣理解起來就不會感到吃力。而如果你已經有了一定的Android基礎,那么就可以選擇某些你感興趣的章節進行跳躍式的閱讀。但請記住,很多章最後的最佳實踐部分一定是你不想錯過的。

內容結構

本書的內容是非常系統化的,不僅全面介紹了那些你必須掌握的知識,而且保證了各章的難度都是梯度式上升的。全書一共分為15章,涵蓋了四大組件、UI、碎片、數據存儲、多媒體、網路、定位服務等方方面面的知識。為了讓你在學完所有內容之後還可以有綜合運用的能力,本書的尾聲部分還會帶你一起開發一個天氣預報程式,並教會你如何將程式發布到套用商店,以及如何在程式中嵌入廣告盈利。

除此之外,本書的第5章、第7章、第11章、第14章中都穿插有對Git的講解,如果想要掌握它的用法,這幾章的內容是絕對不能錯過的。

本書中各個章節的內容都相對比較獨立,因此除了可以循序漸進地學習之外,你還可以把它當成一本參考手冊,隨時查閱。

源碼下載

首先,我建議你在學習本書的時候將所有項目的源碼都親手敲上一遍,因為只有這樣才能加深你對代碼的理解。不過為了方便於你的學習,我還是提供了書中所有項目的源碼,請僅在需要的時候再去參考(如下載項目中的圖片資源)。切勿直接將源碼複製貼上就當成自己的東西了,只有親手敲過的代碼才真正是你自己的。

圖書目錄

第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

相關詞條

熱門詞條

聯絡我們