关于本书的内容有任何问题,请联系 李召
第1章 HarmonyOS概述 1.1 为什么要学习HarmonyOS 1 1.1.1 国货精品 1 1.1.2 “大厂”制造 2 1.1.3 风口红利 2 1.2 HarmonyOS应用初体验 2 1.3 本章小结 4 第2章 初探HarmonyOS 2.1 学习HarmonyOS之前需要哪些知识储备 5 2.1.1 HarmonyOS开发的两大方向 5 2.1.2 HarmonyOS应用开发的两种技术栈 6 2.2 HarmonyOS是如何诞生的 7 2.3 HarmonyOS有哪些特性 9 2.3.1 硬件互助,资源共享 9 2.3.2 一次开发,多端部署 12 2.3.3 统一操作系统,弹性部署 12 2.4 全视角了解HarmonyOS架构 13 2.4.1 内核层 13 2.4.2 系统服务层 14 2.4.3 框架层 14 2.4.4 应用层 15 2.5 本章小结 16 第3章 开发环境搭建 3.1 开发第一步——从注册华为账号开始 17 3.1.1 开发者享有的服务/权益 17 3.1.2 注册、认证需要准备的资料 17 3.1.3 注册账号 17 3.1.4 登录账号 18 3.1.5 实名认证 18 3.2 如何下载和安装开发工具HUAWEI DevEco Studio 21 3.2.1 运行环境要求 21 3.2.2 下载和安装Node.js 21 3.2.3 下载和安装DevEco Studio 21 3.3 如何设置DevEco Studio 22 3.4 熟悉DevEco Studio的常用功能及使用技巧 24 3.4.1 创建新工程 24 3.4.2 打开现有工程 25 3.5 本章小结 25 第4章 HarmonyOS应用之“HelloWorld” 4.1 如何创建一个HarmonyOS应用之“HelloWorld” 26 4.1.1 创建新工程 26 4.1.2 选择支持不同设备类型的模板 26 4.1.3 配置项目信息 27 4.1.4 自动生成工程代码 27 4.2 怎样使用模拟器运行HarmonyOS应用 27 4.2.1 运行工程 28 4.2.2 启动模拟器 28 4.2.3 再次运行工程 29 4.2.4 使用本地模拟器运行应用 29 4.3 怎样使用远程真机运行HarmonyOS应用 31 4.3.1 启动远程真机设备 31 4.3.2 运行应用 31 4.3.3 对应用进行签名 32 4.3.4 再次运行应用 33 4.4 怎样使用本地真机运行HarmonyOS应用 33 4.4.1 连接真实的设备 33 4.4.2 运行应用 34 4.5 怎样使用预览器预览HarmonyOS应用 34 4.5.1 如何安装预览器 35 4.5.2 如何使用预览器 35 4.6 本章小结 35 第5章 再探HarmonyOS应用结构 5.1 鸿蒙系统真的是“安卓换壳”吗 36 5.1.1 鸿蒙系统不是“安卓换壳” 36 5.1.2 鸿蒙系统术语解读 37 5.2 HarmonyOS应用结构之App结构详解 38 5.2.1 用户应用程序 38 5.2.2 用户应用程序包结构 38 5.2.3 代码层次的应用 39 5.3 HarmonyOS应用结构之Ability 39 5.3.1 Ability类 39 5.3.2 AbilitySlice类 40 5.3.3 UI 40 5.4 HarmonyOS应用结构之文件详解 41 5.4.1 库文件 41 5.4.2 资源文件 41 5.4.3 配置文件 43 5.5 HarmonyOS应用结构之pack.info 49 5.6 本章小结 50 第6章 HarmonyOS的核心概念及常用UI组件 6.1 如何理解HarmonyOS独有的Ability框架 51 6.1.1 FA 51 6.1.2 PA 52 6.1.3 Ability的配置 52 6.1.4 Ability的三层架构 52 6.2 初识Ability之Page Ability 53 6.2.1 Page Ability基本概念 53 6.2.2 多个AbilitySlice构成一个Page 54 6.2.3 AbilitySlice路由配置 54 6.3 深入理解Page与AbilitySlice的生命周期 55 6.3.1 Page生命周期 55 6.3.2 AbilitySlice生命周期 57 6.3.3 Page与AbilitySlice生命周期关联 57 6.4 如何实现Page中AbilitySlice之间的路由和导航 58 6.4.1 创建应用 58 6.4.2 创建多个AbilitySlice 58 6.4.3 新增PayAbilitySlice样式布局 59 6.4.4 设置PayAbilitySlice样式布局 60 6.4.5 如何实现AbilitySlice之间的路由和导航 61 6.4.6 运行应用 63 6.5 再识Ability之Service Ability 63 6.5.1 创建Service 64 6.5.2 启动与停止Service 65 6.5.3 连接Service 66 6.6 深入理解Service Ability的生命周期 67 6.7 如何实现Service的创建、启动和连接 67 6.7.1 创建Service 67 6.7.2 创建远程对象 70 6.7.3 修改MainAbilitySlice 70 6.7.4 修改ability_main.xml 73 6.7.5 运行应用 74 6.8 终识Ability之Data Ability 75 6.8.1 URI 75 6.8.2 访问Data 75 6.9 如何实现Data的创建和访问 76 6.9.1 创建Data 76 6.9.2 初始化数据库 79 6.9.3 重写query( )方法 80 6.9.4 重写insert( )方法 80 6.9.5 重写update( )方法 81 6.9.6 重写delete( )方法 81 6.9.7 修改MainAbilitySlice 81 6.9.8 运行应用 85 6.10 深入理解Ability框架必用信息载体——lntent 86 6.10.1 Operation与Parameters 86 6.10.2 根据Ability的全称启动应用 86 6.10.3 根据Operation的其他属性启动应用 87 6.10.4 启动系统应用 92 6.11 HarmonyOS常用UI组件 96 6.12 常用UI组件——Text 96 6.12.1 设置背景 96 6.12.2 设置字号和颜色 97 6.12.3 设置字体风格和字重 99 6.12.4 设置文本对齐方式 100 6.12.5 设置文本换行和最大显示行数 101 6.12.6 设置自动调节字号 101 6.12.7 实现跑马灯效果 103 6.12.8 场景示例 105 6.13 常用UI组件——Image 107 6.13.1 创建Image 107 6.13.2 设置透明度 108 6.13.3 设置缩放系数 109 6.14 常用UI组件——Slider 109 6.14.1 创建Slider 109 6.14.2 设置Slider的展示方向 110 6.15 常用UI组件——Button 111 6.15.1 创建Button 111 6.15.2 设置点击事件 113 6.15.3 设置椭圆按钮 115 6.15.4 设置圆形按钮 116 6.15.5 场景示例 117 6.16 常用UI组件——PageSlider 121 6.16.1 创建PageSlider 122 6.16.2 创建PageSliderProvider的子类TextPageSliderProvider 122 6.16.3 使用PageSliderProvider 123 6.16.4 运行应用 124 6.16.5 设置布局方向 124 6.17 常用UI组件——ScrollView 125 6.17.1 创建ScrollView 125 6.17.2 配置Text显示的内容 125 6.18 常用UI组件——ListContainer 126 6.18.1 创建ListContainer 126 6.18.2 创建ListContainer子布局文件 127 6.18.3 创建ListContainer数据包装类 127 6.18.4 创建ListContainer数据提供者 128 6.18.5 修改MainAbilitySlice 129 6.19 常用UI组件——TabList 130 6.19.1 创建TabList 130 6.19.2 响应焦点变化 132 6.20 常用UI组件——ToastDialog 134 6.20.1 创建Button 134 6.20.2 生成ToastDialog 135 6.20.3 自定义ToastDialog的样式 135 6.21 常用UI组件——CommonDialog 136 6.21.1 创建Button 137 6.21.2 生成CommonDialog 137 6.21.3 自定义CommonDialog的样式 138 6.22 本章小结 138 第7章 HarmonyOS常用布局及技巧 7.1 HarmonyOS应用开发常用的6种布局方式 139 7.1.1 组件和布局 139 7.1.2 Component和ComponentContainer 139 7.1.3 LayoutConfig 140 7.1.4 组件树 140 7.1.5 编写布局的方式 141 7.1.6 布局方式 141 7.2 使用DirectionalLayout实现水平或者垂直方向排列 141 7.2.1 DirectionalLayout的自有XML属性 142 7.2.2 DirectionalLayout所包含组件可支持的XML属性 142 7.2.3 DirectionalLayout演示示例 142 7.3 使用DependentLayout实现相对位置排列 145 7.3.1 DependentLayout的自有XML属性 146 7.3.2 DependentLayout所包含组件可支持的XML属性 146 7.3.3 DependentLayout演示示例 148 7.4 使用StackLayout实现以层叠的方式显示视图 151 7.4.1 StackLayout所包含组件可支持的XML属性 152 7.4.2 StackLayout演示示例 152 7.5 使用TableLayout以表格的方式划分子组件 153 7.5.1 TableLayout的自有XML属性 153 7.5.2 TableLayout演示示例 154 7.6 使用PositionLayout通过指定准确的坐标值显示组件 155 7.7 使用AdaptiveBoxLayout实现自适应布局能力 157 7.7.1 AdaptiveBoxLayout实现原理 157 7.7.2 AdaptiveBoxLayout常用方法 157 7.7.3 AdaptiveBoxLayout演示示例 158 7.8 本章小结 161 第8章 短视频App需求分析及设计 8.1 短视频平台概况 162 8.1.1 短视频平台百花齐放 162 8.1.2 短视频平台功能 163 8.2 我们要实现的功能 163 8.3 HarmonyOS短视频App架构 165 8.4 HarmonyOS短视频App之前台设计 166 8.5 HarmonyOS短视频App之后台设计 167 8.6 HarmonyOS短视频App之存储设计 167 8.6.1 关系数据库运作机制 167 8.6.2 ORM数据库运作机制 168 8.6.3 HarmonyOS短视频App的存储设计主要内容 168 8.7 本章小结 168 第9章 短视频App原型设计与实现 9.1 应用初始化 169 9.1.1 为什么需要原型设计 169 9.1.2 如何实现原型设计 169 9.1.3 创建短视频App 170 9.2 欢迎界面 170 9.2.1 创建WelcomePageAbility 170 9.2.2 修改ability_welcome.xml 170 9.2.3 主入口显示WelcomePageAbility 171 9.3 注册界面 172 9.3.1 创建RegisterAbilitySlice 172 9.3.2 修改ability_register.xml 172 9.3.3 导航到RegisterAbilitySlice 172 9.4 首页 173 9.4.1 注册界面添加Button 173 9.4.2 从注册界面导航到MainAbilitySlice 174 9.5 导航栏 175 9.5.1 用DirectionalLayout实现导航栏 175 9.5.2 用Button实现导航栏中的按钮 175 9.6 视频发布界面 177 9.6.1 新建VideoPublishPageAbility 177 9.6.2 修改ability_video_publish_layout.xml 177 9.6.3 从首页导航到VideoPublishPageAbility 177 9.7 “我的”界面 179 9.7.1 创建MePageAbility 179 9.7.2 从首页导航到MePageAbility 180 9.7.3 从视频发布界面导航到MePageAbility 181 9.7.4 从MePageAbility导航到视频发布界面 182 9.7.5 从MePageAbility导航到首页 183 9.8 本章小结 184 第10章 短视频App个人管理模块设计与实现 10.1 美化欢迎界面 185 10.1.1 更换Logo 185 10.1.2 修改背景色 186 10.1.3 修改字体颜色 186 10.2 基于TextField搭建注册界面 187 10.2.1 使用TextField实现账号和密码输入框 187 10.2.2 使用Image设置头像 188 10.2.3 修改Button样式 188 10.3 基于ScrollView、TableLayout实现相册界面 189 10.3.1 创建ImageSelectionAbilitySlice 189 10.3.2 TableLayout和ScrollView 189 10.3.3 动态添加图片到TableLayout 190 10.3.4 动态计算图片的宽度 191 10.4 将JSON文件内容解析为图片资源 193 10.4.1 准备本地图片资源及JSON文件 193 10.4.2 读取JSON文件内容 193 10.4.3 JSON字符串转换为Java对象列表 194 10.5 实现本地图片资源获取的工具类CommonUtil 195 10.5.1 创建实现本地图片资源获取的方法getImageSource( ) 195 10.5.2 将JSON数据转换为PortraitInfo列表数据 195 10.5.3 使用CommonUtil在相册中显示图片 196 10.6 选取本地图片资源作为用户头像 197 10.6.1 跳转到相册界面 197 10.6.2 选择相册图片 198 10.7 通过onResult( )获取头像选择的结果 199 10.7.1 使用presentForResult( )跳转界面 200 10.7.2 使用setResult( )回写结果 200 10.7.3 重写onResult( )来获取结果 201 10.8 对用户注册/登录时账号、密码进行校验 201 10.8.1 获取用户的账号和密码 201 10.8.2 校验账号和密码 202 10.9 对用户注册/登录时头像进行校验 202 10.9.1 将头像路径作为类成员变量 202 10.9.2 完善校验方法 203 10.10 初始化ORM数据库 204 10.10.1 添加与compileOptions相关的配置 204 10.10.2 继承OrmDatabase 205 10.10.3 创建DatabaseUitl 205 10.10.4 执行DatabaseUtil.initStore( )初始化数据存储 206 10.11 基于ORM实现用户信息存储 207 10.11.1 定义用户实体UserInfo 207 10.11.2 创建用户数据仓库UserInfoRepository 209 10.11.3 使用UserInfoRepository存储和查询用户信息 210 10.12 本章小结 211 第11章 短视频App核心功能——视频管理模块 11.1 定义视频播放器的生命周期接口IVideoPlayerLifecycle 212 11.2 定义视频播放器的状态枚举类PlayerStatusEnum和视频播放器的状态变化监听器StatusChangeListener 212 11.2.1 PlayerStatusEnum 213 11.2.2 StatusChangeListener 214 11.3 定义视频播放器的接口IVideoPlayer 214 11.4 实现视频播放器的生命周期接口实现类VideoPlayerLifecycle 216 11.5 基于Player、Surface实现视频播放器 218 11.5.1 创建VideoPlayer 218 11.5.2 创建Builder 218 11.5.3 实现addSurface( )方法 219 11.5.4 实现addPlayerStatusCallback( )方法 219 11.5.5 实现play( )方法 219 11.5.6 实现构造函数 220 11.5.7 实现initBasePlayer( )方法 220 11.5.8 实现start( )方法 224 11.5.9 实现replay( )方法 225 11.5.10 实现reload( )方法 225 11.5.11 实现resume( )方法 225 11.5.12 实现pause( )方法 226 11.5.13 实现getCurrentPosition( )方法 226 11.5.14 实现getDuration( )方法 226 11.5.15 实现getVideoScale( )方法 226 11.5.16 实现rewindTo( )方法 227 11.5.17 实现isPlaying( )方法 227 11.5.18 实现stop( )方法 227 11.5.19 实现release( )方法 227 11.5.20 实现getLifecycle( )方法 228 11.5.21 实现getPlayerStatus( )方法 228 11.5.22 实现getBuilder( )方法 228 11.6 定义绑定视频播放器相关信息的接口IVideoPlayerInfoBinding 228 11.6.1 新建VideoInfo 229 11.6.2 定义VideoPlayerInfo 232 11.6.3 定义IVideoPlayerInfoBinding接口 233 11.7 基于自定义布局实现播放器界面PlayerView 233 11.7.1 定义PlayerView 233 11.7.2 成员变量及构造函数的实现 234 11.7.3 绑定、解绑视频播放器相关信息 236 11.7.4 自适应屏幕大小 237 11.7.5 启动播放 237 11.8 基于自定义布局、AnimatorProperty实现加载动画界面PlayerLoading 238 11.8.1 创建PlayerLoading类 238 11.8.2 创建布局文件video_player_loading_layout.xml 239 11.8.3 成员变量及构造函数的实现 239 11.8.4 绑定、解绑视频播放器相关信息 241 11.8.5 实现onTouchEvent( )方法 242 11.9 基于自定义布局、Slider实现视频控制器界面PlayerController 243 11.9.1 定义PlayerController 243 11.9.2 创建布局文件video_player_controller_layout.xml 244 11.9.3 成员变量及构造函数的实现 245 11.9.4 实现createHandler( )方法 246 11.9.5 实现initView( )方法 249 11.9.6 实现initListener( )方法 250 11.9.7 实现bind( )方法 250 11.9.8 实现unbind( )方法 252 11.10 基于ORM实现视频信息存储 253 11.10.1 定义实体VideoInfo 253 11.10.2 注册VideoInfo 253 11.10.3 创建VideoInfoRepository 253 11.11 基于JSON文件的视频列表读取 256 11.11.1 准备数据及JSON文件 256 11.11.2 读取视频列表并初始化到数据库中 256 11.12 基于PageSlider实现滑动切换视频功能 257 11.12.1 在ability_main.xml中增加PageSlider 257 11.12.2 新增VideoPlayerPageSlider-Provider类 258 11.12.3 获取登录用户的信息 261 11.12.4 通过initData( )方法初始化视频信息数据 262 11.12.5 使用initPageSlider( )方法初始化PageSlider 263 11.12.6 运行应用 264 11.13 设置导航栏的样式 264 11.14 视频信息的展示 266 11.14.1 修改video_player_controller_layout.xml 266 11.14.2 修改PlayerController 267 11.15 视频发布界面整体布局设计 268 11.15.1 修改ability_video_publish_layout.xml 268 11.15.2 获取用户信息 270 11.15.3 初始化组件 270 11.16 基于ScrollView、TableLayout实现视频选择界面 270 11.16.1 为什么没有采用拍摄并上传视频的方式 271 11.16.2 创建视频选择界面的布局文件 271 11.16.3 创建视频选择界面的AbilitySlice 272 11.16.4 跳转到视频选择界面及返回 275 11.16.5 视频发布 276 11.16.6 运行应用 277 11.17 基于ToastDialog实现发布校验与提示 277 11.18 本章小结 278 第12章 短视频App功能实现——视频展示模块 12.1 “我的”界面整体布局 279 12.1.1 修改ability_me_layout.xml 279 12.1.2 获取用户信息 282 12.1.3 实现个人信息展示区 282 12.1.4 基于PixelMapElement实现背景图 283 12.2 基于ListContainer实现视频发布列表功能 284 12.2.1 视频列表展示区 284 12.2.2 初始化视频列表 284 12.2.3 初始化分类页签及设置TabList选择事件 285 12.2.4 基于ListContainer实现视频列表 286 12.2.5 使用VideoListItemProvider 290 12.3 基于CommonDialog实现编辑界面 291 12.3.1 继承CommonDialog 291 12.3.2 定义编辑界面的布局文件 291 12.3.3 实现编辑界面 292 12.3.4 使用编辑界面 293 12.4 删除视频 294 12.5 基于Image实现视频点赞、取消点赞功能 294 12.5.1 视频播放界面操作区布局设计 295 12.5.2 实现点赞按钮及点赞量的显示 296 12.5.3 处理视频点赞及取消点赞事件 297 12.6 基于ORM实现点赞信息存储 298 12.6.1 定义实体MeThumbsupVideoInfo 298 12.6.2 注册实体MeThumbsupVideoInfo 300 12.6.3 创建MeThumbsupVideoInfo-Repository 300 12.6.4 处理视频点赞与取消点赞操作 301 12.6.5 初始化首页数据时的点赞信息处理 302 12.7 基于ListContainer实现视频点赞列表功能 303 12.7.1 新建视频点赞列表数据项布局文件 303 12.7.2 继承BaseItemProvider用于点赞列表数据项呈现 304 12.7.3 初始化视频点赞列表 306 12.7.4 自定义TabList选择事件 306 12.8 基于Image实现视频收藏、取消收藏功能 307 12.8.1 视频播放界面操作区布局设计 308 12.8.2 实现收藏按钮及收藏量的显示 308 12.8.3 处理视频收藏及取消收藏事件 309 12.9 基于ORM实现收藏信息存储 310 12.9.1 定义实体MeFavoriteVideoInfo 310 12.9.2 注册实体MeFavoriteVideoInfo 312 12.9.3 创建MeFavoriteVideoInfo-Repository 312 12.9.4 处理视频收藏与取消收藏操作 313 12.9.5 初始化首页数据时的收藏信息处理 313 12.10 基于ListContainer实现视频收藏列表功能 314 12.10.1 新建视频收藏列表数据项布局文件 314 12.10.2 继承BaseItemProvider用于收藏列表数据项呈现 315 12.10.3 初始化视频收藏列表 317 12.10.4 自定义TabList选择事件 317 12.11 基于Button实现关注、取关功能 319 12.11.1 视频播放界面操作区布局设计 319 12.11.2 实现“关注”按钮 319 12.11.3 处理关注及取关事件 320 12.12 基于ORM实现关注信息存储 321 12.12.1 定义实体UserFollowInfo 321 12.12.2 注册实体UserFollowInfo 322 12.12.3 创建UserFollowInfoRepository 322 12.12.4 处理关注与取关操作 323 12.12.5 初始化首页数据时的关注信息处理 324 12.13 基于ListContainer实现关注列表功能 324 12.13.1 新建关注列表数据项布局文件 325 12.13.2 继承BaseItemProvider用于关注列表数据项呈现 326 12.13.3 初始化关注列表 327 12.13.4 自定义TabList选择事件 328 12.14 基于CommonDialog实现评论窗口功能 329 12.14.1 增加评论等组件 329 12.14.2 创建基于CommonDialog的评论窗口 330 12.14.3 实现评论列表 334 12.14.4 使用评论窗口 337 12.15 基于ORM实现评论信息存储 339 12.15.1 定义实体CommentInfo 339 12.15.2 注册实体CommentInfo 339 12.15.3 创建CommentInfoRepository 340 12.15.4 存储评论信息 340 12.15.5 从数据库中获取评论信息 341 12.16 如何实现简易版播放器 341 12.16.1 创建界面布局文件 341 12.16.2 实现简易版播放器 341 12.17 实现视频预览 345 12.17.1 实现“我的”作品预览 345 12.17.2 实现“我的”点赞预览 345 12.17.3 实现“我的”收藏预览 346 12.18 实现沉浸式用户体验 347 12.19 本章小结 347 附录A 本书所涉及的技术及软件版本
本书从初学者的角度出发,通过实用的案例和通俗易懂的语言,详细介绍使用HTML5、CSS3和JavaScript...
本书满足国家自主可控操作系统的战略需要,符合“三教”改革精神,是一本基于“项目驱动、任务导向”的“双元”模式项...
本书是一本详细介绍如何利用人工智能绘图软件亦心AI与AI闪绘进行室内设计的图文教程,也是一本微课视频教程。全书...
本书基于Python 3.13,采用理论与项目结合的方式全面介绍Flask 3.1框架的相关知识。本书共10章...
本书基于 Red Hat Enterprise Linux 9.5操作系统介绍Limux 操作系统的相关知识。...
我要评论