仓颉语言极速入门——UI全场景实战(开发者成长丛书 )
定 价:109 元
丛书名:开发者成长丛书
本书以仓颉的UI实战为主,语法部分介绍了主要组成部分,快速且形象地阐述了仓颉编程语言的主要特性,让零编程基础的新手都可以迅速入门仓颉,在此基础上结合互联网热门垂直领域的潮流App设计,带您深入场景式UI开发体验。利用CangjieUI 鸿蒙的组合,能够让我们在开发基于DSL的App应用时超快上手,从而可以快速开发基于鸿蒙乃至跨平台的应用UI。本书共两部分。第1~9章介绍仓颉基础编程知识,从零起步介绍了仓颉主要特性如面向对象编程、面向接口编程、函数式编程等,聚焦在语法层面。第10~21章基于强大的CangjieUI框架,实际切入各种场景化的精美AppUI开发案例,助力读者彻底地掌握使用CangjieUI框架开发各种复杂AppUI的技巧。本书案例丰富,实操性系统性强,辅助读者更快地掌握本书的要点、难点。本书既可以成为仓颉初学者的入门书,也可以为想从事仓颉应用开发的人士或培训机构,提供前置知识参考。
本书是一本基础快速入门加UI实战的书,有基础知识,有丰富示例,还有详细的操作步骤,实操性非常强。本书第1~9章介绍仓颉基础编程知识,第10~21章属于UI实战案例,这些例子彼此之间相互独立,读者在掌握了前面的基础知识后,可以通过11个非常有代表性的App案例项目来全面掌握CangjieUI的开发过程。
近年来,随着信息产业的国产化浪潮席卷而来,与芯片、操作系统、应用框架、编程语言相关的基础设施如雨后春笋般崛起。在这个历史机遇下,以华为公司为代表的一些领头羊企业成为弄潮儿。OpenHarmony打响了国产自主操作系统的第一枪,而且众多与OpenHarmony生态相关的公司正在诞生。可以预见,OpenHarmony可以成为与Android、 iOS两大移动端操作系统比肩的新力量,将来甚至可达到与macOS、Windows等桌面端系统的高度,而华为的另一力作仓颉编程语言,必将是OpenHarmony之上的坚实代码 依靠。 本书以仓颉的UI实战为主,语法部分介绍了仓颉编程语言的主要组成部分,形象地阐述了仓颉编程语言的主要特性,让零编程基础的新手也可以迅速入门仓颉,在此基础上结合互联网热门垂直领域的潮流App设计,带领读者深入场景式UI开发体验。利用CangjieUI OpenHarmony的组合,能够让读者在开发基于DSL的App时超快上手,从而可以快速开发基于OpenHarmony乃至跨平台的应用UI。本书主要内容 本书内容是笔者在充分实践的过程中总结归纳得出的,一共分为两部分,内容如下: 第1章概要介绍仓颉的定位和主要特性。 第2章介绍如何开发第1个仓颉Hello?World程序。 第3章从一个日常生活的应用场景引出仓颉的语法基础,让读者快速入门这门语言的大部分主要内容。 第4章介绍仓颉语法中的高级类型和类型转换。 第5章介绍仓颉的面向接口编程理念。 第6章介绍仓颉的函数式编程特性及一些常用的高级函数。 第7章介绍当程序遇到异常时,在仓颉语言中是如何处理的,包括现代编程语言中对空的新式处理。 第8章介绍非常流行的泛型编程,以及泛型接口和泛型约束等新奇方法。 第9章描述在仓颉语言中对异步编程和多线程的处理。 第10章开始全面介绍仓颉的UI框架,以及CangjieUI的基本使用方法。 第11章以咖啡杯的杯型选择为例,介绍CangjieUI中构建互动式UI的精髓要点,学完此章便可掌握如何快速构建App的UI组件。 第12章给出一个耳目一新的创意应用飞我电瓶车,以打电瓶车为例,构建一个相关的整体UI。 第13章介绍一个智能家居控制的应用鸿蒙之家,覆盖了家庭内常用的智能化电器控制总览、单独控制的UI及用电量的柱状图统计互动实现,其中有网格组件Grid的使用,并且实现了一个系统尚未提供开关组件的从零开始的UI和互动实现。 第14章描绘一个非常经典的租车应用主要页面的实现,以及滚动列表的应用。 第15章带来笔者在HarmonyOS开发者创新大赛中决赛获奖作品智能打蒜器第1个版本的UI实现。 第16章是一个日常生活中使用频率高的应用绝汁水果。实现一个瀑布流的水果缩略图布局,以及页面式按钮的实现。在页面过渡时,首次使用了共享转场的视觉特效,非常惊艳。 第17章使用一些CangjieUI中的动画特效实现了一个旅游应用畅游。启动页第一眼看过去就会让用户产生旅游的冲动,首页和内页的配合和布局恰到好处,可满足用户追求高端素雅的旅游产品需求。 第18章来到一个音乐应用起司播客。作为用户经常使用的一种类型应用,如何布局和配色达到艺术审美是非常重要的。超美且简洁的UI是用户使用音乐类App的一大要素。 第19章通过一个风格化的旅游拼团App,来介绍如何通过渐变、瀑布流、头像堆叠等CangjieUI中的经典用法,实现一个有深度的文化类应用。 第20章以一个Web端的生鲜配送网站为例,介绍CangjieUI在大尺寸屏幕上布局的应用能力。 第21章以一个炫彩流光的美妆电商网站为例,介绍如何制作复杂层次感和在深色系统主题背景下的高级UI组合。为最终使用CangjieUI实现复杂精美的平面应用UI布局打下坚实基础。阅读建议 本书是一本基础快速入门加UI实战的书,有基础知识,有丰富示例,还有详细的操作步骤,实操性非常强。仓颉语言内容较多且处于发展阶段,所以本书力求精简,提供了代码供读者参照,由于Cangjie和CangjieUI框架更新比较快,建议读者届时获取最新的源代码以便可以立即复刻出效果。 本书从第10章开始讲解UI实战案例,读者在掌握了前面的基础知识后,可以通过 11个非常有代表性的App案例项目来全面掌握CangjieUI的开发过程。不过读者无须按部就班地按书中的顺序学习这些案例,因为这些例子彼此之间相互独立,任意选择其中一章开始即可。本书源代码和配套资源 扫描下方二维码,可获取本书源代码,以及第11~21章的工程图片资源。
本书配套资源致谢 首先感谢家人在笔者写作过程中的理解和鼓励,使本书的顺利出版成为可能,写作期间一直得到华为仓颉团队的技术支持,在此表示衷心感谢;其次感谢清华大学出版社赵佳霓编辑的耐心帮助。 由于水平和时间的限制,本书难免存在疏漏之处,请读者见谅并不吝提出宝贵意见。 张云波 2024年5月
II
III
张云波 ,一个喜欢尝试前沿领域的自由程序员,花川学院创始人、华为开发专家(Huawei Developer Experts,HDE)、首届HarmonyOS开发者创新大赛导师、第二届HarmonyOS开发者创新大赛科技创新奖得主、51CTO开源技术社区MVP、润和软件HiHope社区专家、未来杯HarmonyOS技术应用创新大赛导师。曾就职于IBM、SAP、SONY等公司,具有丰富的工作经验。从苹果Swift、微信小程序、区块链,到如今的鸿蒙和仓颉,自然不能错过,希望可以亲眼见证IT行业国产化的深度崛起。
第1章 仓颉概览 11.1 仓颉的定位 11.2 仓颉主要特性 1第2章 第1个仓颉程序 42.1 安装及查看仓颉版本 42.2 Hello World 52.2.1 编写第1个程序 52.2.2 代码编译和执行 5第3章 仓颉语法基础 63.1 常量和变量 63.2 类型自动推断 83.3 两种数值类型 83.4 布尔类型 83.5 流向控制 93.6 字符串类型 113.7 区间类型 123.8 循环控制 123.9 字符串插值 133.10 函数 133.11 运算符 163.12 使用库函数 163.13 使用集合类型 173.14 本章小结 20第4章 高级类型 214.1?记录类型 214.2?枚举类型 244.3?类 254.3.1?类的封装 254.3.2?类的继承和多态 294.4?类型转换 334.5?本章小结 37第5章 面向接口编程 385.1 接口 385.2 扩展既有类型 405.3 面向接口编程 415.4 定义基础接口 435.5 实现接口的类型 445.6 给接口扩展默认的实现 535.7 枚举类型的接口实现 555.8 覆盖默认行为 555.9 接口的通用化 565.10 本章小结 58第6章 函数高级特性 596.1 函数类型 596.2 使用函数类型的3种方式 606.3 闭包表达式 626.4 尾随闭包 636.5 函数重载 656.6 构造函数 666.7 系统中的高级函数 666.7.1 map 676.7.2 compactMap 686.7.3 filter 686.7.4 reduce 686.8 本章小结 69第7章 程序异常处理 707.1 异常的分类 707.2 抛出一个异常 717.3 Result类型 737.4 解包Result类型 747.5 Option类型 767.6 本章小结 77第8章 泛型编程 788.1 常见的泛型化案例 788.2 泛型接口 798.3 泛型类型 818.4 泛型函数 838.5 泛型约束 838.6 本章小结 84第9章 异步编程 859.1 新线程 859.2 异步等待 929.3 线程休眠 103第10章 仓颉UI框架 10410.1 文件组织 10410.2 声明式语法 10510.3 状态管理 10510.4 生命周期 10710.5 装饰器变量 10710.6 样式 10810.7 常用组件 10910.7.1 容器组件 10910.7.2 独立组件 11210.8 系统接口现状 115第11章 仓颉UI实战案例:咖啡杯 11611.1 杯型定义 11711.2 定义资源 11811.2.1 图片资源 11811.2.2 文字资源 11811.2.3 颜色资源 11911.3 新建组件的源码文件 12011.4 数据源和状态变量定义 12011.5 单个杯型的布局 12111.6 样式定义 12111.7 条件样式 12211.8 用户互动 12211.9 循环渲染 12311.10 容器包装 12411.10.1 序号显示 12411.10.2 均分空间 12511.10.3 描边和圆角 12611.11 组合 12711.12 组件重用 128第12章 仓颉UI案例:飞我电瓶车 13012.1 资源导入 13112.2 启动页结构 13112.3 最终启动页 13712.4 加载指示器组件 14012.4.1 组件结构 14012.4.2 旋转动画 14112.5 目的地页 14112.5.1 历史数据 14112.5.2 状态变量 14212.5.3 下单函数 14212.5.4 弹性面板组件 14312.5.5 List组件 14312.5.6 组合 14412.6 下单成功提示页 14912.6.1 状态变量 14912.6.2 纯组件 15012.6.3 预览用组件 15212.6.4 组合 15312.7 骑手当前位置页 15612.7.1 状态变量 15612.7.2 纯组件 15712.7.3 预览用组件 158第13章 仓颉UI案例:鸿蒙之家 16013.1 资源导入 16013.2 启动页 16113.2.1 横幅数据 16113.2.2 组件结构 16213.2.3 开始按钮 16313.3 首页 16413.3.1 全屋智能家电数据 16413.3.2 导航区域 16513.3.3 数据网格 16613.3.4 选项条 16913.3.5 组合 17013.4 开关组件 17013.4.1 组件结构 17013.4.2 状态变量 17113.4.3 颜色定义 17113.4.4 单击动画 17113.4.5 纯组件 17213.4.6 预览用组件 17213.4.7 组合 17313.5 房屋智能读数结构 17313.6 用电量组件 17413.6.1 状态变量 17413.6.2 组件结构 17513.6.3 组合测试 17713.7 详情页 18113.7.1 状态变量 18113.7.2 导航栏 18213.7.3 温湿度卡片 18213.7.4 用电量柱状图 18413.7.5 设备列表卡片 18413.7.6 组合测试 187第14章 仓颉UI案例:卡星租车 19614.1 资源导入 19814.2 启动页结构 19914.2.1 跃动的标志 19914.2.2 中部文本 20014.2.3 底部按钮 20114.2.4 组合 20214.3 车型数据结构 20214.4 地图定位页 20314.5 预订页 20514.5.1 搜索栏 20614.5.2 标题栏 20714.5.3 筛选栏 20714.5.4 车型列表区域 20914.5.5 组合 21314.6 车型详情页 21314.6.1 状态变量 21414.6.2 纯组件 21414.6.3 组合 223第15章 仓颉UI案例:智能打蒜器 22415.1 资源导入 22515.2 首页结构 22615.3 功能层 22615.3.1 状态变量 22615.3.2 面板控制区域 22615.3.3 文字提示区域 22715.4 开关灯指示层 227第16章 仓颉UI案例:绝汁水果 22916.1 资源导入 23016.2 启动页结构 23116.2.1 横幅数据 23116.2.2 横幅组件 23116.2.3 进入按钮 23316.2.4 组合 23316.3 首页 23416.3.1 状态变量 23416.3.2 标题栏 23616.3.3 水果卡片 23716.3.4 组合 24016.4 详情页 24016.4.1 状态变量 24116.4.2 添加至购物车函数 24116.4.3 页面结构 24216.4.4 组合 246第17章 仓颉UI案例:畅游 24717.1 资源导入 24817.2 启动页结构 24917.2.1 背景层 24917.2.2 文字层 25017.2.3 动效层 25217.2.4 组合 25417.3 首页 25517.3.1 旅游产品数据 25517.3.2 状态变量 25617.3.3 导航栏 25617.3.4 文字栏 25717.3.5 筛选栏 25717.3.6 旅游卡片列表 25817.3.7 选项卡 26017.3.8 组合 26117.4 详情页 26217.4.1 状态变量 26217.4.2 背景层 26217.4.3 导航栏 26217.4.4 品名和价格区 26317.4.5 预订区 26517.4.6 组合 268第18章 仓颉UI案例:起司播客 27018.1 资源导入 27118.2 首页结构 27218.2.1 导航栏 27218.2.2 分类标题 27318.2.3 分类卡片列表 27318.2.4 筛选栏 27818.2.5 音乐列表 28018.2.6 组合 28418.3 频道页 28518.3.1?播客作品数据 28518.3.2 导航栏 28618.3.3 播客个人信息区域 28618.3.4 播客作品列表 28718.3.5 组合 28918.4 播放页 29018.4.1 状态变量 29018.4.2 导航栏 29118.4.3 作品大图 29218.4.4 作品名和作者 29218.4.5 播放控制按钮 29318.4.6 组合 294第19章 仓颉UI案例:世界巡游团 29519.1 资源导入 29619.2 启动页 29719.2.1 封面组件 29719.2.2 启动按钮组件 30219.2.3 背景色 30319.2.4 右侧封面修正 30319.2.5 组合 30419.3 首页 30619.3.1 导航组件 30619.3.2 口号文字组件 30819.3.3 搜索条组件 30919.3.4 筛选按钮栏 31119.3.5 推荐卡片列表组件 31519.3.6 选项卡组件 33119.3.7 首页的调整优化 33519.4 详情页 33819.4.1 导航栏 33819.4.2 缩略图列表 34019.4.3 详情卡片 34219.4.4 组合 350第20章 仓颉UI案例:生鲜配送网 35320.1 资源导入 35420.2 首页结构 35520.3 导航 35520.3.1 阴影层 35620.3.2 菜单层 35720.3.3 菜单阴影效果 35720.3.4 菜单内容 35820.4 上半部分 36220.4.1 背景图片层 36320.4.2 主题文字层 36720.4.3 右侧指示图片层 37120.4.4 组合 37220.5 中间部分 37920.6 下半部分 38020.6.1 卡片结构 38020.6.2 卡片背景 38120.6.3 卡片内容 38320.6.4 卡片列表 38820.6.5 卡片列表容器背景 39320.6.6 组合 39420.7 下半屏预览 395第21章 仓颉UI案例:溢彩美妆网 39721.1 资源导入 39821.2 启动页结构 39921.3 背景层 39921.3.1 渐变流动光影 39921.3.2 图形衬边 40121.3.3 组合 40721.4 导航 41021.4.1 大标题 41021.4.2 导航菜单 41021.4.3 右侧图标组 41121.4.4 组合 41221.5 主题文字区 41421.5.1 小标题 41421.5.2 大标题 41521.5.3 副标题 41621.5.4 按钮组 41621.5.5 组合 41721.6 图片区 42021.6.1 双卡片组 42021.6.2 横幅卡片 42121.6.3 组合 42121.7 评价浮层 42421.7.1 评价卡片 42421.7.2 评价头像 42521.7.3 组合 42521.8 组装首页 427
VI
VII