鸿蒙开发笔记(十四): UI开发概述及布局概述

这篇具有很好参考价值的文章主要介绍了鸿蒙开发笔记(十四): UI开发概述及布局概述。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. 概述

方舟开发框架(简称ArkUI)为HarmonyOS应用的UI开发提供了完整的基础设施,包括简洁的UI语法、丰富的UI功能(组件、布局、动画以及交互事件),以及实时界面预览工具等,可以支持开发者进行可视化界面开发。

针对不同的应用场景及技术背景,方舟开发框架提供了两种开发范式,分别是基于ArkTS的声明式开发范式(简称“声明式开发范式”)和兼容JS的类Web开发范式(简称“类Web开发范式”)。

  • 声明式开发范式:采用基于TypeScript声明式UI语法扩展而来的ArkTS语言,从组件、动画和状态管理三个维度提供UI绘制能力。

  • 类Web开发范式:采用经典的HML、CSS、JavaScript三段式开发方式,即使用HML标签文件搭建布局、使用CSS文件描述样式、使用JavaScript文件处理逻辑。该范式更符合于Web前端开发者的使用习惯,便于快速将已有的Web应用改造成方舟开发框架应用。

在开发一款新应用时,推荐采用声明式开发范式来构建UI,主要基于以下几点考虑:

  • 开发效率:声明式开发范式更接近自然语义的编程方式,开发者可以直观地描述UI,无需关心如何实现UI绘制和渲染,开发高效简洁。

  • 应用性能:如下图所示,两种开发范式的UI后端引擎和语言运行时是共用的,但是相比类Web开发范式,声明式开发范式无需JS框架进行页面DOM管理,渲染更新链路更为精简,占用内存更少,应用性能更佳。

  • 发展趋势:声明式开发范式后续会作为主推的开发范式持续演进,为开发者提供更丰富、更强大的能力。

方舟开发框架示意图

鸿蒙开发笔记(十四): UI开发概述及布局概述,鸿蒙开发,harmonyos,鸿蒙开发,移动开发

1.1 不同应用类型支持的开发范式

根据所选用HarmonyOS应用模型(Stage模型、FA模型)和页面形态(应用或服务的普通页面、卡片)的不同,对应支持的UI开发范式也有所差异,详见下表。

鸿蒙开发笔记(十四): UI开发概述及布局概述,鸿蒙开发,harmonyos,鸿蒙开发,移动开发

2. UI开发(ArkTS声明式开发范式)

基于ArkTS的声明式开发范式的方舟开发框架是一套开发极简、高性能、支持跨设备的UI开发框架,提供了构建HarmonyOS应用UI所必需的能力,主要包括:

  • ArkTS

    ArkTS是HarmonyOS优选的主力应用开发语言,围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展。扩展能力包含声明式UI描述、自定义组件、动态扩展UI元素、状态管理和渲染控制。状态管理作为基于ArkTS的声明式开发范式的特色,通过功能不同的装饰器给开发者提供了清晰的页面更新渲染流程和管道。状态管理包括UI组件状态和应用程序状态,两者协作可以使开发者完整地构建整个应用的数据更新和UI渲染。ArkTS语言的基础知识请参考学习ArkTS语言。

  • 布局

    布局是UI的必要元素,它定义了组件在界面中的位置。ArkUI框架提供了多种布局方式,除了基础的线性布局、层叠布局、弹性布局、相对布局、栅格布局外,也提供了相对复杂的列表、宫格、轮播。

  • 组件

    组件是UI的必要元素,形成了在界面中的样子,由框架直接提供的称为系统组件,由开发者定义的称为自定义组件。系统内置组件包括按钮、单选框、进度条、文本等。开发者可以通过链式调用的方式设置系统内置组件的渲染效果。开发者可以将系统内置组件组合为自定义组件,通过这种方式将页面组件化为一个个独立的UI单元,实现页面不同单元的独立创建、开发和复用,具有更强的工程性。

  • 页面路由和组件导航

    应用可能包含多个页面,可通过页面路由实现页面间的跳转。一个页面内可能存在组件间的导航如典型的分栏,可通过导航组件实现组件间的导航。

  • 图形

    方舟开发框架提供了多种类型图片的显示能力和多种自定义绘制的能力,以满足开发者的自定义绘图需求,支持绘制形状、填充颜色、绘制文本、变形与裁剪、嵌入图片等。

  • 动画

    动画是UI的重要元素之一。优秀的动画设计能够极大地提升用户体验,框架提供了丰富的动画能力,除了组件内置动画效果外,还包括属性动画、显式动画、自定义转场动画以及动画API等,开发者可以通过封装的物理模型或者调用动画能力API来实现自定义动画轨迹。

  • 交互事件

    交互事件是UI和用户交互的必要元素。方舟开发框架提供了多种交互事件,除了触摸事件、鼠标事件、键盘按键事件、焦点事件等通用事件外,还包括基于通用事件进行进一步识别的手势事件。手势事件有单一手势如点击手势、长按手势、拖动手势、捏合手势、旋转手势、滑动手势,以及通过单一手势事件进行组合的组合手势事件。

2.1 特点

  • 开发效率高,开发体验好

    1. 代码简洁:通过接近自然语义的方式描述UI,不必关心框架如何实现UI绘制和渲染。

    2. 数据驱动UI变化:让开发者更专注自身业务逻辑的处理。当UI发生变化时,开发者无需编写在不同的UI之间进行切换的UI代码, 开发人员仅需要编写引起界面变化的数据,具体UI如何变化交给框架。

    3. 开发体验好:界面也是代码,让开发者的编程体验得到提升。

  • 性能优越

    1. 声明式UI前端和UI后端分层:UI后端采用C++语言构建,提供对应前端的基础组件、布局、动效、交互事件、组件状态管理和渲染管线。

    2. 语言编译器和运行时的优化:统一字节码、高效FFI-Foreign Function Interface、AOT-Ahead Of Time、引擎极小化、类型优化等。

  • 生态容易快速推进

    能够借力主流语言生态快速推进,语言相对中立友好,有相应的标准组织可以逐步演进。

2.2 整体架构

鸿蒙开发笔记(十四): UI开发概述及布局概述,鸿蒙开发,harmonyos,鸿蒙开发,移动开发

  • 声明式UI前端

    提供了UI开发范式的基础语言规范,并提供内置的UI组件、布局和动画,提供了多种状态管理机制,为应用开发者提供一系列接口支持。

  • 语言运行时

    选用方舟语言运行时,提供了针对UI范式语法的解析能力、跨语言调用支持的能力和TS语言高性能运行环境。

  • 声明式UI后端引擎

    后端引擎提供了兼容不同开发范式的UI渲染管线,提供多种基础组件、布局计算、动效、交互事件,提供了状态管理和绘制能力。

  • 渲染引擎

    提供了高效的绘制能力,将渲染管线收集的渲染指令,绘制到屏幕的能力。

  • 平台适配层

    提供了对系统平台的抽象接口,具备接入不同系统的能力,如系统渲染管线、生命周期调度等。

2.3 开发学习流程

使用UI开发框架开发应用时,主要涉及如下开发过程。开发者可以先通过 第一个入门实例了解整个应用的UI开发过程。

鸿蒙开发笔记(十四): UI开发概述及布局概述,鸿蒙开发,harmonyos,鸿蒙开发,移动开发

3. 布局

3.1 布局结构

布局的结构通常是分层级的,代表了用户界面中的整体架构。一个常见的页面结构如下所示:

鸿蒙开发笔记(十四): UI开发概述及布局概述,鸿蒙开发,harmonyos,鸿蒙开发,移动开发

Page表示页面的根节点,Column/Row等元素为系统组件。针对不同的页面结构,ArkUI提供了不同的布局组件来帮助开发者实现对应布局的效果,例如Row用于实现线性布局。

3.2 布局元素的组成

布局元素组成图

鸿蒙开发笔记(十四): UI开发概述及布局概述,鸿蒙开发,harmonyos,鸿蒙开发,移动开发

  • 组件区域(蓝区方块):组件区域表明组件的大小,width、height属性设置该区域的大小。

  • 组件内容区(黄色方块):组件区域大小减去组件的border值,组件内容区大小会作为组件内容(或者子组件)进行大小测算时的布局测算限制。

  • 组件内容(绿色方块):组件内容本身占用的大小,比如文本内容占用的大小。组件内容和组件内容区不一定匹配,比如设置了固定的width和height,此时组件内容的大小就是设置的width和height减去padding和border值,但文本内容则是通过文本布局引擎测算后得到的大小,可能出现文本真实大小小于设置的组件内容区大小。当组件内容和组件内容区大小不一致时,align属性生效,定义组件内容在组件内容区的对齐方式,如居中对齐。

  • 组件布局边界(虚线部分):组件通过margin属性设置外边距时,组件布局边界就是组件区域加上margin的大小。

3.3 如何选择布局

声明式UI提供了以下8种常见布局,开发者可根据实际应用场景选择合适的布局进行页面开发。

鸿蒙开发笔记(十四): UI开发概述及布局概述,鸿蒙开发,harmonyos,鸿蒙开发,移动开发

3.4 布局位置

position、offset等属性影响了布局容器相对于自身或其他组件的位置。

鸿蒙开发笔记(十四): UI开发概述及布局概述,鸿蒙开发,harmonyos,鸿蒙开发,移动开发

3.5 对子元素的约束

鸿蒙开发笔记(十四): UI开发概述及布局概述,鸿蒙开发,harmonyos,鸿蒙开发,移动开发文章来源地址https://www.toymoban.com/news/detail-806055.html

到了这里,关于鸿蒙开发笔记(十四): UI开发概述及布局概述的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【学习笔记】鸿蒙UI开发-布局(ArkTs)

    GitHub:LearnHos 码云:LearnHos 拉伸能力 定义 当父容器的尺寸发生变化时,增加或减少的空间 全部分配 给父容器内的 指定子组件 场景1:自动填充 实现:容器组件-Row + 基础组件Blank 场景2:按指定的比例拉伸或收缩 拉伸 当父容器在主轴方向上的尺寸 大于 所有子组件的尺寸之

    2024年02月05日
    浏览(42)
  • HarmonyOS应用开发学习笔记 UI布局学习 相对布局 (RelativeContainer)

    官方文档 其实很好理解 :alignRules{}里面表示: 元素四个方向(left,top,bottom,right), 相对于谁(anchor:‘id’) 的什么位置(HorizontalAlign.Start ,VerticalAlign.Bottom ,VerticalAlign.Bottom, HorizontalAlign.End ) RelativeContainer为采用相对布局的容器,支持容器内部的子元素设置相对位

    2024年02月02日
    浏览(47)
  • HarmonyOS应用开发学习笔记 UI布局学习 栅格布局(GridRow/GridCol)

    HarmonyOS应用开发学习笔记 UI布局学习 相对布局 (RelativeContainer) 官方文档:栅格布局(GridRow/GridCol) 通过设置GridRow的direction属性来指定栅格子组件在栅格容器中的排列方向 代码 描述 GridRowDirection.Row 从左往右排列 GridRowDirection.RowReverse 从右往左排列 左往右排列 子组件从右

    2024年02月03日
    浏览(50)
  • harmonyOS 开发之UI开发(ArkTS声明式开发范式)概述(笔记1)

    万物互联、全新分布式操作系统。(涉及分布式处理、分布式管理、分布式连接等) 实现硬件互助,资源共享。 面向开发者,一次开发、多端部署 统一OS,弹性部署 封面图

    2024年01月21日
    浏览(49)
  • 鸿蒙开发笔记(一):ArkTS概述及声明式UI的使用

    ArkTS是HarmonyOS优选的主力应用开发语言。ArkTS围绕应用开发在TypeScript(简称TS)生态基础上做了进一步扩展,继承了TS的所有特性,是TS的超集。 ArkTS在TS的基础上主要扩展了如下能力: 基本语法 :ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力,再配合ArkUI开发

    2024年01月17日
    浏览(49)
  • HarmonyOS应用开发学习笔记 UI布局学习 List(){}创建列表 列表形式显示 简单使用

    List 创建列表 列表形式显示 官方文档:创建列表(List) 关键代码 List(){} 列表控件 ListItem() {} 子元素 例如 关键代码:listDirection(Axis.Horizontal) 默认竖直方向 Axis.Vertical 分隔线的宽度会使ListItem之间存在一定间隔,当List设置的内容间距小于分隔线宽度时,ListItem之间的间隔会使用

    2024年02月02日
    浏览(47)
  • HarmonyOS应用开发学习笔记 UI布局学习 创建轮播(Swiper) artTS 轮播组件 简单使用

    官方文档 Swiper组件提供滑动轮播显示的能力。Swiper本身是一个容器组件,当设置了多个子组件后,可以对这些子组件进行轮播显示。通常,在一些应用首页显示推荐的内容时,需要用到轮播显示的能力。 loop 控制是否循环 this.swiperController.showNext(); // 通过controller切换到后一页

    2024年02月02日
    浏览(72)
  • HarmonyOS鸿蒙开发常用4种布局详细说明

    一直会分享,虽然鸿蒙目前来没有多大发展,但不可否然以后发展,华为的技术是一大突破,存在即合理 可以现在没有多大发展。但不可否定未来的发展。 1、线性布局 2、层叠布局 3、网格布局 4、列表布局 线性布局(LinearLayout)是开发中最常用的布局,通过线性容器Row(行

    2024年04月14日
    浏览(52)
  • HarmonyOS鸿蒙开发指南:构建用户界面 构建布局

    目录 布局说明 添加标题行和文本区域 添加图片区域 添加留言区域 添加容器

    2024年02月22日
    浏览(52)
  • UI开发布局-HarmonyOS应用UI开发布局

    UI页面的构建不用再像Android开发过程中在.xml文件中书写,可直接在页面上使用声明式UI的方式按照布局进行排列,构建应用的页面。 如下代码使用Row、Column构建一个页面布局,在页面布局中添加组件Text、Button,共同构成页面: 在实际开发的过程中,按照如下流程进行页面的

    2024年04月13日
    浏览(63)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包