鴻蒙之光HarmonyOS NEXT原生應用開發入門
柳偉衛
相關主題
商品描述
目錄大綱
目 錄
第 1 章 初識HarmonyOS NEXT 1
1.1 HarmonyOS產生的背景 1
1.1.1 萬物互聯時代的新挑戰 1
1.1.2 什麽是HarmonyOS 2
1.1.3 HarmonyOS應用開發 3
1.2 HarmonyOS核心技術理念 3
1.2.1 一次開發,多端部署 4
1.2.2 可分可合,自由流轉 6
1.2.3 統一生態,原生智能 7
1.3 HarmonyOS NEXT新特性 7
1.3.1 Stage模型 8
1.3.2 Ability組件的生命周期 8
1.3.3 ArkUI開發框架 9
1.3.4 ArkTS編程語言 10
1.3.5 ArkWeb 10
1.3.6 “純血鴻蒙”解讀 10
1.4 DevEco Studio的安裝 11
1.4.1 下載DevEco Studio 11
1.4.2 安裝DevEco Studio 11
1.4.3 配置DevEco Studio 12
1.4.4 創建虛擬機 13
1.5 實戰:創建第一個HarmonyOS NEXT應用 18
1.5.1 選擇創建新項目 18
1.5.2 選擇模板 18
1.5.3 配置項目信息 19
1.5.4 自動生成工程代碼 20
1.5.5 預覽項目 20
1.5.6 運行項目 21
1.6 應用工程結構介紹 22
1.6.1 App包結構 22
1.6.2 工程級目錄 23
1.6.3 entry模塊級目錄 23
1.6.4 配置文件 23
1.7 本章小結 26
1.8 上機練習:開發第一個HarmonyOS NEXT應用——Hello World 26
第 2 章 ArkTS語言基礎 27
2.1 基本知識 27
2.1.1 聲明 27
2.1.2 類型 28
2.1.3 運算符 30
2.1.4 語句 32
2.2 函數 36
2.2.1 函數聲明 36
2.2.2 可選參數 36
2.2.3 rest參數 36
2.2.4 返回類型 37
2.2.5 函數的作用域 37
2.2.6 函數調用 37
2.2.7 函數類型 37
2.2.8 箭頭函數 37
2.2.9 閉包 38
2.2.10 函數重載 38
2.3 類 38
2.3.1 字段 39
2.3.2 方法 41
2.3.3 構造函數 44
2.3.4 可見性修飾符 44
2.3.5 對象字面量 45
2.3.6 Record類型的對象字面量 46
2.4 接口 46
2.4.1 接口屬性 47
2.4.2 接口繼承 47
2.5 泛型類型 48
2.5.1 泛型類和泛型接口 48
2.5.2 泛型約束 48
2.5.3 泛型函數 48
2.5.4 泛型默認值 49
2.6 空安全 49
2.6.1 非空斷言運算符 50
2.6.2 空值合並運算符 50
2.6.3 可選鏈 50
2.7 模塊 51
2.7.1 導出 51
2.7.2 導入 51
2.7.3 頂層語句 53
2.8 本章小結 53
2.9 上機練習:統計字符串的字符數 53
第 3 章 Ability開發 54
3.1 Ability概述 54
3.1.1 單Ability應用和多Ability應用 54
3.1.2 HarmonyOS應用模型 55
3.2 FA模型介紹 55
3.2.1 FA模型中的Ability 55
3.2.2 FA模型的生命周期 56
3.2.3 FA模型的進程/線程模型 56
3.3 Stage模型介紹 57
3.3.1 Stage模型的設計思想 57
3.3.2 Stage模型的基本概念 58
3.4 UIAbility介紹 59
3.4.1 UIAbility的生命周期 59
3.4.2 UIAbility的啟動模式 59
3.4.3 UIAbility組件的基本用法 60
3.5 Want概述 62
3.5.1 Want的用途 62
3.5.2 Want的類型 63
3.5.3 Want的參數及屬性 64
3.6 實戰:顯式Want啟動Ability 65
3.6.1 新建Ability內頁面 65
3.6.2 新建Ability 66
3.6.3 使用顯式Want啟動Ability 66
3.6.4 運行 67
3.7 本章小結 68
3.8 上機練習:啟動系統設置 68
第 4 章 ArkUI基礎開發 69
4.1 ArkUI概述 69
4.1.1 ArkUI基本概念 69
4.1.2 ArkUI主要特徵 70
4.1.3 JS、TS、ArkTS、ArkUI、ArkCompiler之間的聯系 70
4.2 聲明式開發範式 72
4.2.1 聲明式開發範式與類Web開發範式 72
4.2.2 聲明式開發範式的基礎能力 72
4.2.3 聲明式開發範式的整體架構 72
4.2.4 聲明式開發範式的基本組成 73
4.3 常用組件 74
4.4 基礎組件詳解 74
4.4.1 Blank 75
4.4.2 Button 75
4.4.3 Checkbox 76
4.4.4 CheckboxGroup 77
4.4.5 DataPanel 78
4.4.6 DatePicker 78
4.4.7 Divider 79
4.4.8 Gauge 80
4.4.9 Image 81
4.4.10 ImageAnimator 83
4.4.11 LoadingProgress 85
4.4.12 Marquee 85
4.4.13 Navigation 86
4.4.14 PatternLock 86
4.4.15 Progress 87
4.4.16 QRCode 88
4.4.17 Radio 88
4.4.18 Rating 89
4.4.19 RichText 89
4.4.20 ScrollBar 90
4.4.21 Search 91
4.4.22 Select 91
4.4.23 Slider 92
4.4.24 Span 92
4.4.25 Stepper與StepperItem 94
4.4.26 Text 95
4.4.27 TextArea 96
4.4.28 TextClock 97
4.4.29 TextInput 97
4.4.30 TextPicker 98
4.4.31 TextTimer 98
4.4.32 TimePicker 99
4.4.33 Toggle 99
4.4.34 Web 100
4.4.35 SymbolGlyph 101
4.5 本章小結 103
4.6 上機練習:實現高仿WeLink打卡應用 103
第 5 章 ArkUI高級開發 104
5.1 渲染控制 104
5.1.1 if/else條件渲染 104
5.1.2 ForEach循環渲染 105
5.2 容器組件詳解 107
5.2.1 Column和Row 107
5.2.2 ColumnSplit和RowSplit 108
5.2.3 Flex 109
5.2.4 Grid和GridItem 110
5.2.5 GridRow和GridCol 111
5.2.6 List、ListItem和ListItemGroup 112
5.2.7 AlphabetIndexer 113
5.2.8 Badge 115
5.2.9 Counter 116
5.2.10 Navigator 117
5.2.11 Refresh 119
5.2.12 RelativeContainer 120
5.2.13 Scroll 121
5.2.14 SideBarContainer 122
5.2.15 Stack 123
5.2.16 Swiper 123
5.2.17 Tabs和TabContent 124
5.3 媒體組件詳解 125
5.4 繪制組件詳解 128
5.4.1 Circle和Ellipse 128
5.4.2 Line 129
5.4.3 Polyline 130
5.4.4 Polygon 131
5.4.5 Path 132
5.4.6 Rect 134
5.4.7 Shape 135
5.5 畫布組件詳解 137
5.6 常用佈局 138
5.6.1 自適應佈局 139
5.6.2 響應式佈局 140
5.7 實戰:使用ArkUI實現“登錄”界面 140
5.7.1 使用Column容器實現整體佈局 141
5.7.2 使用Image組件實現標志展示 141
5.7.3 使用TextInput組件實現賬號和密碼的輸入 141
5.7.4 使用Button組件實現“登錄”按鈕 142
5.7.5 使用Text組件實現“註冊”按鈕 142
5.7.6 完整代碼 142
5.8 實戰:使用ArkUI實現“計算器”應用 143
5.8.1 新增Calculator.ets的文件 143
5.8.2 實現遞歸運算 144
5.8.3 實現輸入字符串轉為字符串數組 145
5.8.4 新增CalculatorButtonInfo.ets文件 146
5.8.5 實現CalculatorButton組件 146
5.8.6 構造整體頁面 147
5.8.7 運行 148
5.9 本章小結 148
5.10 上機練習:實現圖片輪播播放器應用 149
第 6 章 公共事件 150
6.1 公共事件概述 150
6.1.1 公共事件的分類 150
6.1.2 公共事件的開發 151
6.2 實戰:訂閱、發布、取消公共事件 152
6.2.1 添加按鈕 152
6.2.2 添加Text組件顯示接收的事件 153
6.2.3 設置按鈕的單擊事件方法 153
6.2.4 運行 154
6.3 Emitter概述 155
6.3.1 訂閱 155
6.3.2 取消訂閱 155
6.3.3 發送事件 156
6.4 實戰:使用Emitter進行線程間通信 156
6.4.1 添加按鈕 156
6.4.2 添加Text組件顯示接收的事件 156
6.4.3 設置按鈕的單擊事件方法 157
6.4.4 運行 157
6.5 本章小結 158
6.6 上機練習:實現購物車應用 158
第 7 章 窗口管理 160
7.1 窗口開發概述 160
7.1.1 窗口的分類 160
7.1.2 窗口模塊的用途 160
7.1.3 窗口沉浸式能力 161
7.1.4 應用窗口模式 161
7.2 窗口管理 162
7.2.1 設置應用主窗口屬性及目標頁面 162
7.2.2 設置應用子窗口屬性及目標頁面 162
7.2.3 體驗窗口沉浸式能力 162
7.2.4 設置懸浮窗 163
7.2.5 監聽窗口不可交互與可交互事件 163
7.3 實戰:實現窗口沉浸式效果 163
7.3.1 獲取應用主窗口 163
7.3.2 實現沉浸式效果 164
7.3.3 運行 165
7.4 智慧多窗 165
7.4.1 懸浮窗 165
7.4.2 分屏 168
7.5 本章小結 168
7.6 上機練習:創建子窗口 169
第 8 章 網絡編程 170
8.1 HTTP數據請求概述 170
8.1.1 HTTP請求方法 170
8.1.2 HTTP狀態碼 171
8.2 實戰:通過HTTP請求數據 171
8.2.1 準備一個HTTP服務接口 171
8.2.2 添加使用Button組件來觸發單擊 171
8.2.3 發起HTTP請求 172
8.2.4 增加權限 172
8.2.5 運行 173
8.3 Web組件概述 173
8.3.1 加載本地網頁 173
8.3.2 加載在線網頁 174
8.3.3 隱私模式加載在線網頁 174
8.3.4 網頁縮放 174
8.3.5 文本縮放 175
8.3.6 Web組件事件 175
8.3.7 Web和JavaScript交互 175
8.3.8 處理頁面導航 179
8.4 實戰:Web組件加載在線網頁 179
8.4.1 準備一個在線網頁地址 179
8.4.2 聲明網絡訪問權限 180
8.4.3 發起HTTP請求 180
8.4.4 運行 180
8.5 本章小結 180
8.6 上機練習:實現一個Web組件展示HTML頁面的應用 181
第 9 章 安全管理 182
9.1 訪問控制概述 182
9.1.1 權限包含的基本概念 182
9.1.2 權限等級說明 183
9.1.3 權限類型 184
9.1.4 權限列表 184
9.2 訪問控制開發步驟 191
9.2.1 權限申請流程 191
9.2.2 權限申請 191
9.2.3 權限授權 192
9.3 實戰:訪問控制授權 192
9.3.1 場景介紹 192
9.3.2 聲明訪問的權限 193
9.3.3 申請授權user_grant權限 193
9.3.4 運行 195
9.4 本章小結 195
9.5 上機練習:使用麥克風 195
第 10 章 數據管理 196
10.1 分佈式數據服務概述 196
10.1.1 分佈式數據服務的基本概念 196
10.1.2 分佈式數據服務運作機制 198
10.1.3 分佈式數據服務約束與限制 199
10.2 分佈式數據服務開發步驟 199
10.2.1 導入模塊 199
10.2.2 構造分佈式數據庫管理類實例 200
10.2.3 獲取/創建分佈式數據庫 200
10.2.4 訂閱分佈式數據庫數據變化 201
10.2.5 將數據寫入分佈式數據庫 201
10.2.6 查詢分佈式數據庫數據 202
10.3 關系數據庫概述 202
10.3.1 關系數據庫的基本概念 202
10.3.2 運作機制 203
10.3.3 默認配置與限制 203
10.4 實戰:關系數據庫開發 203
10.4.1 操作RdbStore 203
10.4.2 賬目信息的表示 206
10.4.3 操作賬目信息表 206
10.4.4 設計界面 208
10.4.5 運行 209
10.5 用戶首選項概述 210
10.5.1 用戶首選項運作機制 210
10.5.2 約束與限制 211
10.6 實戰:用戶首選項開發 211
10.6.1 操作Preferences 211
10.6.2 賬目信息的表示 213
10.6.3 設計界面 213
10.6.4 運行 215
10.7 本章小結 216
10.8 上機練習:使用分佈式數據服務 216
第 11 章 多媒體開發 217
11.1 音頻開發 217
11.1.1 音頻開發的基本概念 217
11.1.2 音頻播放開發指導 217
11.1.3 如何選擇音頻播放開發方式 219
11.1.4 AudioRenderer開發步驟 219
11.1.5 如何選擇音頻錄制開發方式 221
11.1.6 AudioCapturer開發步驟 221
11.2 圖片開發 223
11.2.1 圖片開發的基本概念 223
11.2.2 圖片開發的主要流程 223
11.2.3 圖片解碼 224
11.2.4 圖像變換 226
11.2.5 位圖操作 229
11.2.6 圖片編碼 231
11.2.7 圖片工具 231
11.3 視頻開發 232
11.3.1 視頻開發指導 232
11.3.2 視頻開發步驟 233
11.4 實戰:實現音樂播放器 238
11.4.1 獲取本地音樂 238
11.4.2 音樂播放控制 239
11.4.3 創建播放器界面 240
11.4.4 運行 241
11.5 本章小結 242
11.6 上機練習:實現錄音機應用 242
第 12 章 一次開發,多端部署 243
12.1 “一多”簡介 243
12.1.1 背景 243
12.1.2 定義及目標 243
12.1.3 基礎知識 244
12.2 佈局能力 245
12.2.1 自適應佈局 246
12.2.2 響應式佈局 247
12.3 實戰:圖片查看器的一多UI原型設計 247
12.3.1 UX設計 247
12.3.2 計算設備的類型 249
12.3.3 實現頂部區域UI原型 250
12.3.4 實現中部圖片顯示區UI原型 251
12.3.5 實現圖片預覽列表UI原型 252
12.3.6 實現操作欄UI原型 252
12.4 本章小結 253
12.5 上機練習:實現圖片查看器UI原型 253
第 13 章 應用測試 254
13.1 應用測試概述 254
13.2 單元測試 254
13.2.1 單元測試框架功能特性 254
13.2.2 基本流程 255
13.2.3 斷言庫 256
13.2.4 自定義斷言 259
13.3 UI測試 260
13.3.1 UI測試框架的功能特性 260
13.3.2 Driver類使用說明 261
13.3.3 On類使用說明 262
13.3.4 Component類使用說明 263
13.3.5 UiWindow類使用說明 263
13.4 實戰:UI測試 264
13.4.1 編寫UI測試腳本 264
13.4.2 運行UI測試腳本 265
13.5 本章小結 267
13.6 上機練習:“統計字符串的字符數”的UI測試 267
第 14 章 綜合實戰(1):仿微信應用 268
14.1 仿微信應用概述 268
14.1.1 “微信”頁面 268
14.1.2 “聯系人”頁面 268
14.1.3 “發現”頁面 269
14.1.4 “我”頁面 270
14.2 實戰:“微信”頁面 270
14.2.1 創建“微信”頁面ChatPage 270
14.2.2 定義聯系人Person 271
14.2.3 定義聯系人數據 271
14.2.4 定義樣式 272
14.3 實戰:“聯系人”頁面 273
14.3.1 創建“聯系人”頁面ContactPage 273
14.3.2 定義樣式 274
14.4 實戰:“發現”頁面 275
14.4.1 創建“發現”頁面DiscoveryPage 275
14.4.2 定義樣式 276
14.5 實戰:“我”頁面 277
14.6 實戰:組裝所有頁面 278
14.6.1 Tabs組件作為導航欄 278
14.6.2 Swiper組件實現頁面滑動 279
14.7 本章小結 280
14.8 上機練習:實現一個仿微信界面效果的應用 280
第 15 章 綜合實戰(2):一多圖片查看器 281
15.1 UX設計 281
15.2 架構設計 282
15.2.1 模塊的依賴關系 283
15.2.2 修改Module類型及其設備類型 284
15.3 pictureView模塊實現 285
15.3.1 實現頂部區域 285
15.3.2 實現中部圖片顯示區 286
15.3.3 實現圖片預覽列表 287
15.3.4 實現底部區域操作欄 288
15.3.5 尺寸適配 290
15.3.6 常量和接口 290
15.4 base模塊實現 292
15.4.1 基礎常量類 292
15.4.2 設備類型常量 293
15.4.3 設備尺寸類型 293
15.5 default模塊實現 294
15.5.1 圖片查看器主頁 294
15.5.2 計算設備的類型 294
15.6 本章小結 295
15.7 上機練習:圖片查看器 295
第 16 章 綜合實戰(3):購物應用 296
16.1 購物應用概述 296
16.1.1 購物應用功能 296
16.1.2 購物應用效果展示 296
16.2 實戰:實現商品列表頁簽 297
16.2.1 應用首頁 298
16.2.2 創建模型 298
16.2.3 創建組件 304
16.3 實戰:實現購物車頁簽 307
16.3.1 創建一個頁面 307
16.3.2 創建組件 307
16.4 實戰:實現“我的”頁簽 309
16.4.1 創建一個頁面 310
16.4.2 創建組件 310
16.5 實戰:商品詳情頁面 313
16.5.1 創建一個頁面 313
16.5.2 創建組件 314
16.5.3 設置路由 318
16.6 本章小結 319
16.7 上機練習:實現一個購物應用 319
附錄 模擬器與真機的差異 320
參考文獻 324