目錄
第1章Kotlin基礎
1.1Kotlin簡介
1.1.1第一個Kotlin程序
1.1.2Kotlin的語法糖
1.2變量
1.2.1val和var
1.2.2類型推斷
1.3基本類型
1.4區(qū)間
1.5循環(huán)結構
1.6異常處理
1.7相等運算符
1.8可見性修飾符
1.9控制流程
1.9.1if表達式
1.9.2when表達式
習題
第2章Kotlin方法
2.1方法的定義
2.1.1單行表達式方法
2.1.2成員方法
2.1.3本地方法
2.1.4頂層方法
2.1.5字面量方法
2.1.6尾遞歸方法
2.1.7純方法
2.2參數
2.2.1命名參數
2.2.2默認參數
2.2.3可變參數
2.3常見操作符
2.3.1一元操作符
2.3.2二元操作符
習題
第3章Kotlin類
3.1類的基本用法
3.1.1類與對象
3.1.2訪問級別
3.1.3內部類
3.1.4靜態(tài)方法
3.2繼承
3.3接口
3.4抽象類
3.4.1抽象類的定義
3.4.2抽象類的使用
3.4.3抽象類的特點
3.4.4抽象類的規(guī)則
3.4.5抽象類的實際應用
3.4.6抽象類和接口的差異
3.5擴展
3.5.1擴展函數
3.5.2擴展屬性
3.5.3伴生對象的擴展
3.5.4擴展的作用域
3.6枚舉
3.7密封類
3.8數據類
3.8.1數據類的特性
3.8.2Kotlin中數據類的簡潔性
習題
第4章空安全、反射、注解
4.1空安全
4.1.1可空類型
4.1.2智能轉換
4.1.3訪問可空變量
4.1.4強制操作符
4.1.5Elvis操作符
4.1.6安全轉換
4.2反射
4.2.1Java虛擬機的體系結構
4.2.2獲取類的信息
4.2.3獲取類的其他信息
4.2.4在Kotlin中使用Java中的反射
4.2.5Kotlin中的KClass反射
4.3注解
4.3.1Java注解的組成部分
4.3.2在Java中定義Annotation
4.3.3Java中的常見注解
4.3.4讓Java程序認識注解
4.3.5在Kotlin中使用注解
4.4兼容問題
習題
第5章Kotlin屬性
5.1一般屬性
5.1.1為什么使用屬性
5.1.2語法和變量
5.1.3屬性的訪問規(guī)則
5.2延遲加載和懶加載
5.2.1延遲加載
5.2.2懶加載
5.2.3延遲加載和懶加載的差異
5.3委托屬性
5.3.1什么是委托屬性
5.3.2懶加載屬性
5.3.3可觀察屬性
5.3.4把屬性存儲在映射中
5.3.5局部委托屬性
5.3.6屬性委托的要求
5.3.7翻譯規(guī)則
5.4用屬性還是方法
習題
第6章Kotlin泛型與集合
6.1泛型簡介
6.2型變
6.2.1Java的類型通配符
6.2.2協變與逆變
6.2.3協變和逆變都是類型安全的
6.3Kotlin泛型的特色
6.3.1out T與in T
6.3.2聲明處型變
6.3.3類型投影
6.3.4泛型函數和泛型類
6.4泛型小結
6.5初識集合
6.5.1Iterable
6.5.2MutableIterable
6.5.3Collection
6.5.4MutableCollection
6.6Set
6.6.1概述
6.6.2SetAPI
6.6.3只讀Set
6.6.4可變Set
6.6.5與Java的比較
6.7List
6.7.1概述
6.7.2常用API
6.7.3相關操作
6.8Map
6.8.1概述
6.8.2相關操作
習題
第7章高階函數
7.1函數作為參數
7.2函數作為返回值
7.3函數賦值
7.4閉包
7.5匿名函數
7.6函數的引用
7.6.1頂級函數的引用
7.6.2成員函數和擴展函數的引用
7.7函數接收器
7.8記憶化
7.8.1概述
7.8.2實現記憶化
習題
第8章Kotlin DSL
8.1DSL
8.1.1通用編程語言和DSL
8.1.2API和DSL
8.1.3內部DSL
8.2有趣的Kotlin DSL
8.2.1日期
8.2.2單元測試
8.2.3HTML構建器
8.2.4SQL
8.2.5Android布局
8.2.6Gradle構建
8.3實現原理
8.3.1擴展函數
8.3.2Lambda表達式和高階函數
8.3.3中綴調用
8.3.4invoke約定
習題
第9章初識Android Studio
9.1Android Studio的特性
9.1.1無比強大的開發(fā)工具
9.1.2比以往更快的編碼和訪問速度
9.1.3無限制配置構建
9.1.4滿懷信心地編碼
9.1.5創(chuàng)建豐富且關聯的應用
9.1.6消除令人厭煩的任務
9.2使用Android Studio
9.2.1項目結構
9.2.2界面
9.2.3調試和分析工具
9.3Android項目結構概覽
9.3.1模塊
9.3.2項目文件
9.3.3項目結構設置
9.4創(chuàng)建第一個Android Studio項目
9.4.1啟動新項目
9.4.2導入現有項目
9.4.3添加Kotlin代碼
習題
第10章Android Gradle
10.1Android Gradle編譯文件
10.1.1settings.gradle
10.1.2頂級的build.gradle
10.1.3app模塊的build.gradle
10.2配置SDK版本號以及其他默認配置
10.3Gradle編譯
10.3.1在命令行中執(zhí)行Gradle編譯
10.3.2在Android Studio中執(zhí)行Gradle編譯
10.4處理依賴
10.4.1添加Java庫依賴
10.4.2同步
10.4.3依賴傳遞
10.4.4使用Android Studio添加庫依賴
10.4.5Configuring Repository
10.5設置工程屬性
10.6升級新版本的Gradle
習題
第11章Activity和Fragment
11.1Activity
11.1.1概述
11.1.2Activity的創(chuàng)建方法
11.1.3Activity的生命周期
11.1.4Activity之間的通信
11.1.5Activity的4種啟動模式
11.2Fragment
11.2.1概述
11.2.2動態(tài)添加Fragment
11.2.3Fragment的生命周期
11.2.4Fragment的通信
習題
第12章Service和廣播
12.1Service詳解
12.1.1Service的基本用法
12.1.2Service的生命周期
12.1.3Service和Activity進行通信
12.1.4前臺服務
12.1.5Service和Thread的關系
12.2廣播
12.2.1概述
12.2.2靜態(tài)注冊
12.2.3動態(tài)注冊
12.2.4本地廣播
12.2.5使用私有權限
12.2.6實戰(zhàn)演練
習題
第13章Kotlin實戰(zhàn)之簡單天氣
13.1RxJava介紹
13.1.1作用
13.1.2項目引用
13.1.3概念
13.1.4RxJava中的觀察者模式
13.1.5基本的用法
13.1.6RxJava中的操作符
13.1.7RxJava中的Scheduler
13.1.8RxJava在網絡請求中的使用
13.2Disposable簡介及使用
13.2.1Disposable簡介
13.2.2Disposable對象的獲得
13.3Flowable
13.3.1Flowable的產生
13.3.2處理Backpressure的策略
13.4天氣數據源
13.4.1數據源簡介
13.4.2API地址和常用參數
13.4.3獲取JSON展示樣例
13.5Demo開發(fā)
13.5.1創(chuàng)建項目
13.5.2建立數據模型
13.5.3請求數據
13.6UI界面交互和數據
13.6.1主頁面的實現
13.6.2搜索城市頁面的實現
13.6.3當前天氣頁面的實現
13.6.4多日預報頁面的實現
13.6.5分時查詢頁面的實現
第14章Kotlin實戰(zhàn)之會議App
14.1Dagger2介紹
14.2Dagger2的使用
14.2.1引入Dagger2
14.2.2注解的使用
14.3Room DB存儲
14.3.1Room的3大組件
14.3.2Room的實際使用
14.4導入第三方依賴庫
14.5界面分析
14.5.1首頁的實現
14.5.2個人主頁
14.5.3詳情頁面
參考文獻