第一行代碼Android第3版課件思維導(dǎo)圖源碼免費版整合版 全站導(dǎo)航最近更新

首頁編程開發(fā)源碼相關(guān) → 第一行代碼Android第3版課件思維導(dǎo)圖源碼免費版 整合版
第一行代碼Android第3版課件思維導(dǎo)圖源碼免費版圖標(biāo)

第一行代碼Android第3版課件思維導(dǎo)圖源碼免費版整合版

  • 大。78.5M
  • 時間:2020-12-22 18:17
  • 星級:
  • 語言:中文
  • 環(huán)境:WinAll
  • 版本:整合版
  • 類別:國產(chǎn)軟件/ 免費軟件
  • 官網(wǎng):暫無
  • 廠商:

軟件介紹 軟件截圖 相關(guān)下載 相關(guān)文章 評論(0)

精品下載精心為您推薦:

編輯點評:基于Android 10.0開發(fā)的配套資源下載

2020年剛上新的第一行代碼Android第3版電子書的所有配套資源免費分享給大家,包含了第一行代碼Android第3版所有課件,源碼和思維導(dǎo)圖,基于Android 10.0開發(fā)從入門到精通,Android+Kotlin語言一本通,暢銷書全新升級,CSDN人氣博主郭霖力作。

第一行代碼Android第3版課件思維導(dǎo)圖源碼免費版

第一行代碼Android第3版課件圖片預(yù)覽

章節(jié)介紹

第1章開始啟程,你的第一行Android代碼.pptx

第2章探究新語言,快速入門Kotlin編程.pptx

第3章先從看得到的入手,探究Activity.pptx

第4章軟件也要拼臉蛋,UI開發(fā)的點點滴滴.pptx

第5章手機平板要兼顧,探究Fragment.pptx

第6章全局大喇叭,詳解廣播機制.pptx

第7章數(shù)據(jù)存儲全方案,詳解持久化技術(shù).pptx

第8章跨程序共享數(shù)據(jù),探究ContentProvider.pptx

第9章豐富你的程序,運用手機多媒體.pptx

第10章后臺默默的勞動者,探究Service.pptx

第11章看看精彩的世界,使用網(wǎng)絡(luò)技術(shù).pptx

第12章最佳的U體驗,Material Design實戰(zhàn).pptx

第13章高級程序開發(fā)組件,探究Jetpack.pptx

第14章繼續(xù)進階,你還應(yīng)該掌握的高級技巧5.pptx

目錄介紹

目  錄

第 1章 開始啟程——你的第 一行

Android代碼 1

1.1 了解全貌,Android王國簡介 2

1.1.1 Android系統(tǒng)架構(gòu) 2

1.1.2 Android已發(fā)布的版本 3

1.1.3 Android應(yīng)用開發(fā)特色 4

1.2 手把手帶你搭建開發(fā)環(huán)境 5

1.2.1 準(zhǔn)備所需要的工具 5

1.2.2 搭建開發(fā)環(huán)境 5

1.3 創(chuàng)建你的第 一個Android項目 9

1.3.1 創(chuàng)建HelloWorld項目 9

1.3.2 啟動模擬器 11

1.3.3 運行HelloWorld 14

1.3.4 分析你的第 一個Android程序 15

1.3.5 詳解項目中的資源 20

1.3.6 詳解build.gradle文件 22

1.4 前行必備:掌握日志工具的使用 25

1.4.1 使用Android的日志工具Log 25

1.4.2 為什么使用Log而不使用println() 26

1.5 小結(jié)與點評 28

第 2章 探究新語言,快速入門Kotlin

編程 30

2.1 Kotlin語言簡介 31

2.2 如何運行Kotlin代碼 32

2.3 編程之本:變量和函數(shù) 35

2.3.1 變量 35

2.3.2 函數(shù) 37

2.4 程序的邏輯控制 41

2.4.1 if條件語句 41

2.4.2 when條件語句 42

2.4.3 循環(huán)語句 45

2.5 面向?qū)ο缶幊獭?8

2.5.1 類與對象 49

2.5.2 繼承與構(gòu)造函數(shù) 50

2.5.3 接口 55

2.5.4 數(shù)據(jù)類與單例類 58

2.6 Lambda編程 61

2.6.1 集合的創(chuàng)建與遍歷 61

2.6.2 集合的函數(shù)式API 65

2.6.3 Java函數(shù)式API的使用 69

2.7 空指針檢查 71

2.7.1 可空類型系統(tǒng) 72

2.7.2 判空輔助工具 73

2.8 Kotlin中的小魔術(shù) 77

2.8.1 字符串內(nèi)嵌表達式 77

2.8.2 函數(shù)的參數(shù)默認(rèn)值 78

2.9 小結(jié)與點評 81

第3章 先從看得到的入手,探究

Activity 82

3.1 Activity是什么 82

3.2 Activity的基本用法 82

3.2.1 手動創(chuàng)建Activity 83

3.2.2 創(chuàng)建和加載布局 85

3.2.3 在AndroidManifest文件中

注冊 88

3.2.4 在Activity中使用Toast 90

3.2.5 在Activity中使用Menu 92

3.2.6 銷毀一個Activity 96

3.3 使用Intent在Activity之間穿梭 96

3.3.1 使用顯式Intent 96

3.3.2 使用隱式Intent 99

3.3.3 更多隱式Intent的用法 101

3.3.4 向下一個Activity傳遞數(shù)據(jù) 105

3.3.5 返回數(shù)據(jù)給上一個Activity 106

3.4 Activity的生命周期 108

3.4.1 返回棧 108

3.4.2 Activity狀態(tài) 109

3.4.3 Activity的生存期 110

3.4.4 體驗Activity的生命周期 111

3.4.5 Activity被回收了怎么辦 117

3.5 Activity的啟動模式 118

3.5.1 standard 119

3.5.2 singleTop 120

3.5.3 singleTask 122

3.5.4 singleInstance 123

3.6 Activity的最佳實踐 126

3.6.1 知曉當(dāng)前是在哪一個Activity 126

3.6.2 隨時隨地退出程序 127

3.6.3 啟動Activity的最佳寫法 129

3.7 Kotlin課堂:標(biāo)準(zhǔn)函數(shù)和靜態(tài)方法 130

3.7.1 標(biāo)準(zhǔn)函數(shù)with、run和apply 130

3.7.2 定義靜態(tài)方法 133

3.8 小結(jié)與點評 137

第4章 軟件也要拼臉蛋,UI開發(fā)的

點點滴滴 138

4.1 該如何編寫程序界面 138

4.2 常用控件的使用方法 139

4.2.1 TextView 139

4.2.2 Button 142

4.2.3 EditText 144

4.2.4 ImageView 149

4.2.5 ProgressBar 151

4.2.6 AlertDialog 154

4.3 詳解3種基本布局 156

4.3.1 LinearLayout 156

4.3.2 RelativeLayout 163

4.3.3 FrameLayout 166

4.4 系統(tǒng)控件不夠用?創(chuàng)建自定義控件 169

4.4.1 引入布局 169

4.4.2 創(chuàng)建自定義控件 172

4.5 最常用和最難用的控件:ListView 174

4.5.1 ListView的簡單用法 174

4.5.2 定制ListView的界面 176

4.5.3 提升ListView的運行效率 179

4.5.4 ListView的點擊事件 180

4.6 更強大的滾動控件:RecyclerView 182

4.6.1 RecyclerView的基本用法 183

4.6.2 實現(xiàn)橫向滾動和瀑布流布局 186

4.6.3 RecyclerView的點擊事件 191

4.7 編寫界面的最佳實踐 193

4.7.1 制作9-Patch圖片 193

4.7.2 編寫精美的聊天界面 196

4.8 Kotlin課堂:延遲初始化和密封類 201

4.8.1 對變量延遲初始化 201

4.8.2 使用密封類優(yōu)化代碼 204

4.9 小結(jié)與點評 206

第5章 手機平板要兼顧,探究

Fragment 207

5.1 Fragment是什么 207

5.2 Fragment的使用方式 209

5.2.1 Fragment的簡單用法 210

5.2.2 動態(tài)添加Fragment 212

5.2.3 在Fragment中實現(xiàn)返回!215

5.2.4 Fragment和Activity之間的

交互 216

5.3 Fragment的生命周期 217

5.3.1 Fragment的狀態(tài)和回調(diào) 217

5.3.2 體驗Fragment的生命周期 219

5.4 動態(tài)加載布局的技巧 221

5.4.1 使用限定符 221

5.4.2 使用最小寬度限定符 224

5.5 Fragment的最佳實踐:一個簡易

版的新聞應(yīng)用 225

5.6 Kotlin課堂:擴展函數(shù)和運算符

重載 234

5.6.1 大有用途的擴展函數(shù) 234

5.6.2 有趣的運算符重載 236

5.7 小結(jié)與點評 240

第6章 全局大喇叭,詳解廣播機制 242

6.1 廣播機制簡介 242

6.2 接收系統(tǒng)廣播 243

6.2.1 動態(tài)注冊監(jiān)聽時間變化 243

6.2.2 靜態(tài)注冊實現(xiàn)開機啟動 245

6.3 發(fā)送自定義廣播 249

6.3.1 發(fā)送標(biāo)準(zhǔn)廣播 249

6.3.2 發(fā)送有序廣播 252

6.4 廣播的最佳實踐:實現(xiàn)強制下線功能 255

6.5 Kotlin課堂:高階函數(shù)詳解 261

6.5.1 定義高階函數(shù) 261

6.5.2 內(nèi)聯(lián)函數(shù)的作用 265

6.5.3 noinline與crossinline 268

6.6 Git時間:初識版本控制工具 271

6.6.1 安裝Git 271

6.6.2 創(chuàng)建代碼倉庫 272

6.6.3 提交本地代碼 274

6.7 小結(jié)與點評 274

第7章 數(shù)據(jù)存儲全方案,詳解

持久化技術(shù) 275

7.1 持久化技術(shù)簡介 275

7.2 文件存儲 276

7.2.1 將數(shù)據(jù)存儲到文件中 276

7.2.2 從文件中讀取數(shù)據(jù) 279

7.3 SharedPreferences存儲 281

7.3.1 將數(shù)據(jù)存儲到SharedPre-

ferences中 282

7.3.2 從SharedPreferences中讀取

數(shù)據(jù) 284

7.3.3 實現(xiàn)記住密碼功能 285

7.4 SQLite數(shù)據(jù)庫存儲 288

7.4.1 創(chuàng)建數(shù)據(jù)庫 289

7.4.2 升級數(shù)據(jù)庫 295

7.4.3 添加數(shù)據(jù) 297

7.4.4 更新數(shù)據(jù) 300

7.4.5 刪除數(shù)據(jù) 302

7.4.6 查詢數(shù)據(jù) 304

7.4.7 使用SQL操作數(shù)據(jù)庫 307

7.5 SQLite數(shù)據(jù)庫的最佳實踐 307

7.5.1 使用事務(wù) 308

7.5.2 升級數(shù)據(jù)庫的最佳寫法 309

7.6 Kotlin課堂:高階函數(shù)的應(yīng)用 312

7.6.1 簡化SharedPreferences的用法 312

7.6.2 簡化ContentValues的用法 314

7.7 小結(jié)與點評 317

第8章 跨程序共享數(shù)據(jù),探究ContentProvider 318

8.1 ContentProvider簡介 318

8.2 運行時權(quán)限 319

8.2.1 Android權(quán)限機制詳解 319

8.2.2 在程序運行時申請權(quán)限 322

8.3 訪問其他程序中的數(shù)據(jù) 326

8.3.1 ContentResolver的基本用法 326

8.3.2 讀取系統(tǒng)聯(lián)系人 329

8.4 創(chuàng)建自己的ContentProvider 332

8.4.1 創(chuàng)建ContentProvider的步驟 332

8.4.2 實現(xiàn)跨程序數(shù)據(jù)共享 336

8.5 Kotlin課堂:泛型和委托 345

8.5.1 泛型的基本用法 345

8.5.2 類委托和委托屬性 347

8.5.3 實現(xiàn)一個自己的lazy函數(shù) 350

8.6 小結(jié)與點評 352

第9章 豐富你的程序,運用手機

多媒體 353

9.1 將程序運行到手機上 353

9.2 使用通知 355

9.2.1 創(chuàng)建通知渠道 355

9.2.2 通知的基本用法 357

9.2.3 通知的進階技巧 362

9.3 調(diào)用攝像頭和相冊 367

9.3.1 調(diào)用攝像頭拍照 367

9.3.2 從相冊中選擇圖片 371

9.4 播放多媒體文件 374

9.4.1 播放音頻 374

9.4.2 播放視頻 377

9.5 Kotlin課堂:使用infix函數(shù)構(gòu)建

更可讀的語法 381

9.6 Git時間:版本控制工具進階 383

9.6.1 忽略文件 384

9.6.2 查看修改內(nèi)容 385

9.6.3 撤銷未提交的修改 387

9.6.4 查看提交記錄 388

9.7 小結(jié)與點評 389

第 10章 后臺默默的勞動者,探究

Service 390

10.1 Service是什么 390

10.2 Android多線程編程 391

10.2.1 線程的基本用法 391

10.2.2 在子線程中更新UI 392

10.2.3 解析異步消息處理機制 395

10.2.4 使用AsyncTask 396

10.3 Service的基本用法 399

10.3.1 定義一個Service 399

10.3.2 啟動和停止Service 401

10.3.3 Activity和Service進行

通信 404

10.4 Service的生命周期 408

10.5 Service的更多技巧 408

10.5.1 使用前臺Service 409

10.5.2 使用IntentService 411

10.6 Kotlin課堂:泛型的高級特性 415

10.6.1 對泛型進行實化 415

10.6.2 泛型實化的應(yīng)用 417

10.6.3 泛型的協(xié)變 418

10.6.3 泛型的逆變 422

10.7 小結(jié)與點評 425

第 11章 看看精彩的世界,使用網(wǎng)絡(luò)

技術(shù) 427

11.1 WebView的用法 427

11.2 使用HTTP訪問網(wǎng)絡(luò) 429

11.2.1 使用HttpURLConnection 430

11.2.2 使用OkHttp 433

11.3 解析XML格式數(shù)據(jù) 436

11.3.1 Pull解析方式 438

11.3.2 SAX解析方式 441

11.4 解析JSON格式數(shù)據(jù) 444

11.4.1 使用JSONObject 445

11.4.2 使用GSON 446

11.5 網(wǎng)絡(luò)請求回調(diào)的實現(xiàn)方式 448

11.6 最好用的網(wǎng)絡(luò)庫:Retrofit 451

11.6.1 Retrofit的基本用法 452

11.6.2 處理復(fù)雜的接口地址類型 456

11.6.3 Retrofit構(gòu)建器的最佳寫法 459

11.7 Kotlin課堂:使用協(xié)程編寫高效的

并發(fā)程序 461

11.7.1 協(xié)程的基本用法 461

11.7.2 更多的作用域構(gòu)建器 467

11.7.3 使用協(xié)程簡化回調(diào)的寫法 471

11.8 小結(jié)與點評 474

第 12章 最佳的UI體驗,Material

Design實戰(zhàn) 475

12.1 什么是Material Design 475

12.2 Toolbar 476

12.3 滑動菜單 483

12.3.1 DrawerLayout 483

12.3.2 NavigationView 486

12.4 懸浮按鈕和可交互提示 491

12.4.1 FloatingActionButton 491

12.4.2 Snackbar 494

12.4.3 CoordinatorLayout 496

12.5 卡片式布局 498

12.5.1 MaterialCardView 498

12.5.2 AppBarLayout 504

12.6 下拉刷新 507

12.7 可折疊式標(biāo)題欄 510

12.7.1 CollapsingToolbarLayout 510

12.7.2 充分利用系統(tǒng)狀態(tài)欄空間 519

12.8 Kotlin課堂:編寫好用的工具方法 522

12.8.1 求N個數(shù)的最大最小值 522

12.8.2 簡化Toast的用法 524

12.8.3 簡化Snackbar的用法 526

12.9 Git時間:版本控制工具的高級

用法 528

12.9.1 分支的用法 528

12.9.2 與遠程版本庫協(xié)作 530

12.10 小結(jié)與點評 532

第 13章 高級程序開發(fā)組件,探究

Jetpack 533

13.1 Jetpack簡介 533

13.2 ViewModel 534

13.2.1 ViewModel的基本用法 536

13.2.2 向ViewModel傳遞參數(shù) 539

13.3 Lifecycles 541

13.4 LiveData 545

13.4.1 LiveData的基本用法 545

13.4.2 map和switchMap 549

13.5 Room 554

13.5.1 使用Room進行増刪改查 555

13.5.2 Room的數(shù)據(jù)庫升級 562

13.6 WorkManager 565

13.6.1 WorkManager的基本用法 566

13.6.2 使用WorkManager處理

復(fù)雜的任務(wù) 568

13.7 Kotlin課堂:使用DSL構(gòu)建專有的

語法結(jié)構(gòu) 571

13.8 小結(jié)與點評 577

第 14章 繼續(xù)進階,你還應(yīng)該掌握的

高級技巧 579

14.1 全局獲取Context的技巧 579

14.2 使用Intent傳遞對象 582

14.2.1 Serializable方式 582

14.2.2 Parcelable方式 583

14.3 定制自己的日志工具 584

14.4 調(diào)試Android程序 586

14.5 深色主題 589

14.6 Kotlin課堂:Java與Kotlin代碼

之間的轉(zhuǎn)換 596

14.7 總結(jié) 600

第 15章 進入實戰(zhàn),開發(fā)一個天氣

預(yù)報App 601

15.1 功能需求及技術(shù)可行性分析 601

15.2 Git時間:將代碼托管到GitHub上 605

15.3 搭建MVVM項目架構(gòu) 612

15.4 搜索全球城市數(shù)據(jù) 615

15.4.1 實現(xiàn)邏輯層代碼 615

15.4.2 實現(xiàn)UI層代碼 620

15.5 顯示天氣信息 626

15.5.1 實現(xiàn)邏輯層代碼 626

15.5.2 實現(xiàn)UI層代碼 631

15.5.3 記錄選中的城市 645

15.6 手動刷新天氣和切換城市 647

15.6.1 手動刷新天氣 648

15.6.2 切換城市 650

15.7 制作App的圖標(biāo) 654

15.8 生成正式簽名的APK文件 659

15.8.1 使用Android Studio生成 660

15.8.2 使用Gradle生成 663

15.9 你還可以做的事情 666

第 16章 編寫并發(fā)布一個開源庫,PermissionX 669

16.1 開發(fā)前的準(zhǔn)備工作 669

16.2 實現(xiàn)PermissionX開源庫 673

16.3 對開源庫進行測試 678

16.4 將開源庫發(fā)布到j(luò)center倉庫 681

16.5 體驗我們的成果 688

16.6 結(jié)束語 691

第一行代碼第3版新內(nèi)容介紹

我相信一定會有很多讀者朋友都想問一個問題:《第一行代碼 第3版》相比于《第一行代碼 第2版》具體有哪些變化呢?在這里我就向大家詳細地介紹一下主要的變化部分。

首先是編程語言上的改變,本書前兩版都是使用Java作為應(yīng)用程序的編程語言,而第3版使用了Kotlin,這也是目前Google最推薦我們使用的編程語言。

本書的前兩版中也沒有涉及過語言方面的講解,默認(rèn)讀者是有Java語言基礎(chǔ)的。而第3版中對Kotlin語言進行了非常全面的講解,不需要讀者有任何Kotlin語言的基礎(chǔ)。

另外你需要知道,《第一行代碼 第3版》是一本升級版的書,而不是一本全新的書,因此書中整體的知識架構(gòu)仍然和《第一行代碼 第2版》是保持一致的。

雖然整體知識架構(gòu)不變,但還是涉及了一些章節(jié)上的變動。

第3版中移除了之前第2版中的11、15兩章內(nèi)容。這兩章內(nèi)容分別講解的是LBS開發(fā)、以及App上架。

LBS開發(fā)其實主要講解的都是百度地圖SDK的用法,但是百度地圖SDK很可能會頻繁更新,而書中的內(nèi)容卻是不能隨意改變的,所以我認(rèn)為這部分內(nèi)容更應(yīng)該去百度地圖的開發(fā)者官網(wǎng)進行學(xué)習(xí)。

至于App上架主要講解的是360應(yīng)用商店的上架過程,由于現(xiàn)在國內(nèi)的App上架已經(jīng)變得非常復(fù)雜,個人開發(fā)者都需要專門去申請軟件著作權(quán)才能將自己開發(fā)的App上架到應(yīng)用商店,書中的內(nèi)容已經(jīng)不再適用,所以也進行了移除。

而第3版中新增了三章內(nèi)容,分別是第2章、第13章和第16章。

第2章就是之前提到的Kotlin快速入門章節(jié),這一章將會帶你迅速上手Kotlin編程,講解了如變量、函數(shù)、邏輯控制、面向?qū)ο缶幊獭ambda編程、空指針檢查等Kotlin中最基礎(chǔ)、同時也是最核心的知識點。學(xué)完了這一章內(nèi)容之后,你就可以使用Kotlin來編寫一些Android程序了。

第13章是專門講解Jetpack的一個章節(jié)。Jetpack是Google于近年推出的一個開發(fā)組件工具集,旨在幫助我們編寫出更加符合高質(zhì)量代碼規(guī)范、更加具有架構(gòu)設(shè)計的應(yīng)用程序。是的,現(xiàn)在我們已經(jīng)不能停留在實現(xiàn)功能就萬事大吉的層面了,而是要在實現(xiàn)功能的同時,追求更高的代碼質(zhì)量和架構(gòu)設(shè)計。第13章中講解了ViewModel、Lifecycles、LiveData、Room、WorkManager等內(nèi)容,基本涵蓋了Jetpack架構(gòu)模塊當(dāng)中最主要的一些組件。

第16章是第3版中新補充的一個實戰(zhàn)章節(jié)。本書的前兩版中都只有一個實戰(zhàn)章節(jié),而第3版中會有兩個實戰(zhàn)章節(jié)。不同于過去的App開發(fā)實戰(zhàn),第16章會帶你一起編寫并發(fā)布一個開源庫。因為我之前也寫過幾個比較知名的開源項目,并且我在公司的主要工作就是SDK方面的研發(fā),所以其實我很擅長寫這部分內(nèi)容。還有什么事情是比在別人的項目中看到引用了自己的開源庫更讓人激動的呢?

介紹完了整體章節(jié)上的變動,我們再來看一些具體內(nèi)容上的變化。

為了響應(yīng)Google的Kotlin First號召,第3版中將全書所有的代碼都改成了使用Kotlin語言來進行實現(xiàn),Android的持續(xù)Kotlin化也是未來長期發(fā)展的必然趨勢。不過,由于新增的第2章只是講解了一些Kotlin的基礎(chǔ)內(nèi)容,為了能夠讓你更加全面地掌握Kotlin方方面面的知識,第3版幾乎在每一章的最后都加入了一個Kotlin課堂的環(huán)節(jié)。全書一共有12節(jié)Kotlin課堂,全面涵蓋了諸如常用技巧、高階函數(shù)、泛型、協(xié)程、DSL等等語言層面的知識,絕對足以讓你熟練掌握Kotlin這門語言了。

除了在編程語言方面存在大量的變動之外,Android開發(fā)方面當(dāng)然也不會一成不變。自《第一行代碼 第2版》出版之后,Android又經(jīng)歷了8 9 10系統(tǒng)的快速迭代。每個新系統(tǒng)版本中都會增加一些嶄新的特性,也都需要進行一些開發(fā)方面的適配,第3版將這些內(nèi)容全部涵蓋了進去。

另外,近些年來追求架構(gòu)設(shè)計的開發(fā)者越來越多,類似MVP、MVVM等架構(gòu)的使用也越來越廣泛,傳統(tǒng)的MVC架構(gòu)逐漸在被拋棄。第3版的第15章中對MVVM架構(gòu)進行了非常詳細的講解,并且配合著Google提供的Jetpack組件,最終完成了一個MVVM架構(gòu)的天氣預(yù)報程序。雖然這個天氣預(yù)報程序我已經(jīng)寫了3版了,但是這次將會是最具架構(gòu)性,也最符合高質(zhì)量編碼規(guī)范的版本。相信會對你未來開發(fā)公司的實際項目帶來很大的幫助。

除了上述主要變化之外,還有許多小細節(jié)方面的變動這里就不一一列舉了,等待你自己閱讀的時候發(fā)現(xiàn)吧。

作者的話

不得不說,《第一行代碼 第3版》這本書,在出版的過程中經(jīng)歷了太多坎坷,以至于到今天才能跟大家見面。這里先跟所有的讀者朋友們說聲:對不起,讓你們久等了!

早在2017年,Google在I/O大會上宣布Kotlin將成為Android系統(tǒng)的一級開發(fā)語言,從此與Java平起平坐。那時我就猜想到,在Android應(yīng)用層的開發(fā)語言將掀起一場大淘汰式的替換。當(dāng)時圖靈出版社也看到了這個新聞,圖靈的編輯很快就聯(lián)系我,問我準(zhǔn)不準(zhǔn)備寫一本Kotlin方面的書?

我認(rèn)為掌握一門語言是需要時間沉淀的,學(xué)語法可能兩周就能搞定,但要想體會到精髓,則需要不斷通過寫代碼去磨練和提升。那個時候我不認(rèn)為我具有寫好這樣一本書的能力,所以也就沒有答應(yīng)。

長期關(guān)注我的朋友應(yīng)該知道,在這之后的一年多時間里,我把時間基本都放在了GifFun這個開源項目上面。這個項目一開始是使用Java來寫的,中途被我切換成了Kotlin。因為我知道,要想熟練掌握一門語言,最好的方式就是不斷用它來寫代碼。我也就借此機會,對Kotlin有了更加深刻的理解。

到了2019年,我和出版社又重新進行了商討,準(zhǔn)備對《第一行代碼》再度更新,推出第3版,這次會將全書的代碼都改用Kotlin來實現(xiàn)。但問題在于,Kotlin作為一門新興語言,程序員基數(shù)遠不可能有Java那樣龐大。如果換了語言之后導(dǎo)致大量讀者看不懂怎么辦?

當(dāng)時出版社提出了一個方案,讓我單獨再寫一本專門講解Kotlin語言的書,和《第一行代碼》配套使用。不過我認(rèn)為這個方案會提升《第一行代碼 第3版》的閱讀門檻,就沒有答應(yīng)。

幾經(jīng)思考之后,我認(rèn)為想出了一個最佳的寫作方案:在一本書里面同時講解Android和Kotlin這兩門技術(shù)。這也將會是《第一行代碼》中首次引入編程語言的講解。

但如何安排這兩門技術(shù)之間的內(nèi)容順序是一件非常有挑戰(zhàn)的事情。因為Kotlin是Android程序的開發(fā)語言,很顯然需要先掌握語言才能開發(fā)Android程序?墒侨绻然ㄐ“氡緯钠v解Kotlin,然后再開始學(xué)習(xí)Android開發(fā),這種學(xué)習(xí)方式一定非?菰,因為學(xué)編程語言最怕的就是光學(xué)不練。

為此,我決定采用一種或許別人從未嘗試過的方式,將Kotlin和Android穿插在一起講解。首先使用一個快速入門章節(jié)介紹Kotlin的基礎(chǔ)知識,然后利用已掌握的知識開始學(xué)習(xí)Android開發(fā),這樣可以做到立刻上手實踐。之后的每一章當(dāng)中,都會結(jié)合相當(dāng)章節(jié)的Android內(nèi)容再學(xué)習(xí)一些Kotlin的進階知識,等學(xué)完整本書之后,你就能同時熟練地掌握Android和Kotlin這兩門技術(shù)了。

這種穿插講解的方式非常考驗我的內(nèi)容設(shè)計能力,因為每章的Android開發(fā)中用到的Kotlin知識不能過于超前,不然讀者會出現(xiàn)看不懂的情況。同時每章講解的Kotlin知識又要結(jié)合著相應(yīng)章節(jié)的Android知識,這樣才能更好地理解該知識點的用法與場景。它們之間的內(nèi)容是相輔相成的。

為此,在前期制訂目錄上面我就花了將近一個月的時間,之后編寫Kotlin快速入門這一章又花了兩個多月的時間。因為我以前從來沒有寫過編程語言類的書,為了把Kotlin重要的基礎(chǔ)知識在這一章里面都體現(xiàn)出來,我花費了很多心思。在編寫這一章的過程中,Google I/O 2019大會上正式宣布了Kotlin First的口號,Kotlin已經(jīng)不再和Java是平起平坐,而是變成一等公民了。雖然這是我意料之中的事情,但是比我預(yù)期來得要早,也讓我更加堅定了寫好這本書的信心。

《第一行代碼 第2版》是2016年3月份開始動筆的,同年9月份完稿,12月份出版!兜谝恍写a 第3版》是2019年3月份開始動筆的,但是9月份卻遠遠無法完稿,因為改動內(nèi)容和新增內(nèi)容要遠比第2版時大得多。我?guī)缀醢阉械臉I(yè)余時間都放在了上面,最終在11月底才勉強全書完稿。

本來是想著好事多磨,好書也不怕晚出版幾個月,過完年應(yīng)該就可以跟大家見面了。沒想到,我們恰好碰上了一場從未遇到過的疫情災(zāi)難,包括17年前的SARS也沒有今天的新冠疫情嚴(yán)重。

這場疫情導(dǎo)致中國各方面都受到了極大的創(chuàng)傷,學(xué)校停課,企業(yè)停工,大家都只能呆在家里,不出門就是最安全的。而受疫情的影響,出版社、印刷廠都延遲上班,無法復(fù)工。我每天在公眾號中都會被讀者追問,新書到底什么時候可以出版?這個問題我當(dāng)時真的無法回答,疫情所帶來的影響要持續(xù)到何時真的沒人知道。

后來到了三月份,國內(nèi)的疫情已經(jīng)逐漸控制住,多數(shù)企業(yè)也在慢慢復(fù)工復(fù)產(chǎn)了,這本書才終于能夠得以出版印刷。但是,雖然國內(nèi)的疫情已經(jīng)緩和,海外疫情卻緊接著爆發(fā)了起來,截至到我寫本篇文章時也沒有任何緩和的跡象,F(xiàn)在仍然不知道這場疫情給全球帶來的影響要持續(xù)到何時,我真心希望你在閱讀這篇文章時,新冠已經(jīng)成為了過去式,每個人都恢復(fù)到了正常的生活當(dāng)中。

經(jīng)過了如此多磨難才誕生的這本書,希望能給大家送去更多的知識吧。

第一行代碼Android第3版課件思維導(dǎo)圖源碼免費版截圖

下載地址

網(wǎng)友評論

熱門評論

最新評論

發(fā)表評論查看所有評論(0)

昵稱:
表情: 高興 可 汗 我不要 害羞 好 送花 親親
字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)

更多合集

TOP榜