HarmonyOS学习路之方舟开发框架—基于ArkTS的声明式开发范式

news2024/11/23 19:11:16

UI开发(ArkTS声明式开发范式)概述

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

  • ArkTS

    ArkTS是UI开发语言,基于TypeScript(简称TS)语言扩展而来,是TS的超集。扩展能力包含各种装饰器、自定义组件、UI描述机制。状态数据管理作为基于ArkTS的声明式开发范式的特色,通过功能不同的装饰器给开发者提供了清晰的页面更新渲染流程和管道。状态管理包括UI组件状态和应用程序状态,两者协作可以使开发者完整地构建整个应用的数据更新和UI渲染。

  • 布局

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

  • 组件

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

  • 页面路由和组件导航

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

  • 图形

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

  • 动画

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

  • 交互事件

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

特点

  • 开发效率高,开发体验好
    • 代码简洁:通过接近自然语义的方式描述UI,不必关心框架如何实现UI绘制和渲染。
    • 数据驱动UI变化:让开发者更专注自身业务逻辑的处理。当UI发生变化时,开发者无需编写在不同的UI之间进行切换的UI代码, 开发人员仅需要编写引起界面变化的数据,具体UI如何变化交给框架。
    • 开发体验好:界面也是代码,让开发者的编程体验得到提升。
  • 性能优越
    • 声明式UI前端和UI后端分层:UI后端采用C++语言构建,提供对应前端的基础组件、布局、动效、交互事件、组件状态管理和渲染管线。
    • 语言编译器和运行时的优化:统一字节码、高效FFI-Foreign Function Interface、AOT-Ahead Of Time、引擎极小化、类型优化等。
  • 生态容易快速推进

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

整体架构

图1 整体架构图

 

  • 声明式UI前端

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

  • 语言运行时

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

  • 声明式UI后端引擎

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

  • 渲染引擎

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

  • 平台适配层

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

开发流程

使用UI开发框架开发应用时,主要涉及如下开发过程。

任务

简介

相关指导

学习ArkTS

介绍了ArkTS的基本语法、状态管理和渲染控制的场景。

  • 基本语法
  • 状态管理
  • 渲染控制

开发布局

介绍了几种常用的布局方式以及如何提升布局性能。

  • 常用布局
  • 布局性能

添加组件

介绍了几种常用的内置组件、自定义组件以及通过API方式支持的界面元素。

  • 常用组件
  • 自定义组件
  • 气泡和菜单

设置页面路由和组件导航

介绍了如何设置页面路由以及组件间的导航。

  • 页面路由
  • 组件导航

显示图形

介绍了如何显示图片、绘制自定义几何图形以及使用画布绘制自定义图形。

  • 图片
  • 几何图形
  • 画布

使用动画

介绍了组件和页面使用动画的典型场景。

  • 页面内的动画
  • 页面间的动画

绑定事件

介绍了事件的基本概念和如何使用通用事件和手势事件。

  • 通用事件
  • 手势事件

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/748318.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Apache Doris (二十五):Doris 数据导入(三)Broker Load-1

目录 1. 基本原理 2. Broker Load语法 进入正文之前,欢迎订阅专题、对博文点赞、评论、收藏,关注IT贫道,获取高质量博客内容! 宝子们订阅、点赞、收藏不迷路!抓紧订阅专题! Apache Doris架构中除了有BE和…

华南农业大学|图像处理与分析技术综合设计|题目解答:定位数显区域并分离电表数字

设计任务 图 28 是一幅正在运行的数字电表图像(ipa28.jpg),试采用图像处理与分析 技术,设计适当的算法和程序,找出电表的数显区域,计算目标区域的长宽比 和像素面积;并提取其中面积最大的 …

免费的云数据库:探索PlanetScale,划分分支的MySQL Serverless平台

最近我发现了一个非常有趣的国外MySQL Serverless平台,它叫做PlanetScale。这个平台不仅仅是一个数据库,它能像代码一样轻松地创建开发和测试环境。你可以从主库中拉出一个与之完全相同结构的development或staging数据库,并在这个环境中进行开…

使用Pycharm

本人没有单独安装python,而是直接安装了anaconda 使用Pycharm创建项目 项目取名为HelloWorld,环境使用前面安装的anaconda pycharm安装模块的方法: 打开Pycharm>File > Settings>Project: Python>Project Interpreter

面试题更新之-hook中setState原理

文章目录 hook是什么?hook中setState原理 hook是什么? 在React中,Hook是一种用于在函数组件中添加状态和其他React特性的函数。它们被引入到React 16.8版本中,旨在解决使用类组件编写复杂逻辑时出现的一些问题。 使用Hook&#…

Redis的哨兵机制

Redis的哨兵机制是一套独立的模式,哨兵可看作是一个独立的进程,该进程发送命令,等待Redis的响应,达到监控Redis服务的作用。 如果在规定的时间内,接收不到Redis服务器的响应,那就说明Redis出现了问题&…

通用文字识别OCR 之实现自动化办公

摘要 随着技术的发展,通用文字识别(OCR)已经成为现代办公环境中不可或缺的工具之一。OCR技术可以将印刷或手写文本转换为可编辑或可搜索的数字文本,极大地提高了办公效率并实现了自动化办公。本文将深入探讨OCR技术在实现自动化办…

Promise的理解和使用(从入门到精通)

Promise的理解和使用 1.1Promise是什么 1、抽象表达 Promise是一门新的技术(ES6规范)Promise是JS进行异步编程的新解决方案(旧方案是单纯的使用回调函数) 2、具体表达: 从语法上来说:Promise是一个构造…

C++—C++程序基础

文章目录 1 数据类型1.1 基本数据类型1.2 字面值常量1.3 左值和右值1.4 引用与指针 2 基本输入输出2.1 输出2.2 输入 3 函数3.1 内联函数3.2 函数的重载 1 数据类型 1.1 基本数据类型 在C中,除了C语言中的int,char,float,double…

小程序主包超1.5MB分包处理流程优化方案

"subPackages": [// 分包1 {"root": "src, // 根目录"pages": [{"path": "views/business/index", // 页面路径"name": "business_index","aliasPath": "/business/index",&…

2023年9月广州/重庆/长沙/深圳DAMA-CDGA/CDGP认证考试报名

据DAMA中国官方网站消息,2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启,相关事宜通知如下: 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…

浅析神经网络模型算法在手写文字识别中的重要作用

神经网络模型是什么?与OCR有何不同? 神经网络模型是一种机器学习算法,用于对数据进行模式识别和预测,可应用于各种任务包括图像识别、自然语言处理等。而OCR(Optical Character Recognition)是一种特定的应…

我在阴影之中 - InsCode Stable Diffusion 美图活动一期

写在前面:博主是一只经过实战开发历练后投身培训事业的“小山猪”,昵称取自动画片《狮子王》中的“彭彭”,总是以乐观、积极的心态对待周边的事物。本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成…

第24章:事务基础知识

一、数据库事务Transactions 1.为什么要使用事务 事务可以让数据库保持一致性,通过事务的机制恢复到某个时间点,即使系统崩溃数据库修改的数据不会丢失。 2.存储引擎支持事务的情况 命令: show engines; 只有InnoDB支持事务 3.事务基本概念 事务&a…

【第四章 flutter学习之flutter基础组件】

文章目录 一、目录结构二、创建一个flutter项目三、创建自定义组件四、Container组件 就是divalignment 内容对齐方式decoration 类似border 为BoxDecoration的类 五、Text属性六、image组件六、icon组件总结、 一、目录结构 android、ios各自平台的资源文件 lib 项目目录 linu…

今天给大家分享两款实用的软件

在现代社会中,我们越来越依赖各种各样的软件来提高效率、获得信息和享受娱乐。所以,今天我将与大家分享两款我个人常用且非常实用的软件,一起来看看吧。 人工桌面: 人工桌面是一款备受欢迎的动态桌面壁纸软件,它为我们…

webRTC实现P2P音视频通话(无服务端)

文章目录 先看效果视频对话源码htmlvue2 音频对话源码遇到问题解决方案 先看效果 视频对话源码 html 虽然是vue项目&#xff0c;但是我写在了主页的index页面&#xff0c;仅仅为了测试&#xff0c; <!DOCTYPE html> <html lang"en"> <head><me…

mysql练习---备份/索引/视图

目录 一、备份与还原 二、索引 三、视图 一、备份与还原 CREATE DATABASE booksDB; use booksDB;CREATE TABLE books ( bk_id INT NOT NULL PRIMARY KEY, bk_title VARCHAR(50) NOT NULL, copyright YEAR NOT NULL );INSERT INTO books VALUES (11078, Learning MySQL, 2…

springboot mybatis 双数据库 多数据源

1. 依赖 mybatis相关&#xff1a; <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.2</version> </dependency> <dependency><groupId>com.baomid…