自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(56)
  • 收藏
  • 关注

原创 HarmonyOS NEXT - @Observed装饰器和@ObjectLink装饰器:嵌套类对象属性变化

ObjectLink和@Observed类装饰器用于在涉及嵌套对象或数组的场景中进行双向数据同步:被@Observed装饰的类,可以被观察到属性的变化;子组件中@ObjectLink装饰器装饰的状态变量用于接收@Observed装饰的类的实例,和父组件中对应的状态变量建立双向数据绑定。这个实例可以是数组中的被@Observed装饰的项,或者是class object中的属性,这个属性同样也需要被@Observed装饰。

2024-07-15 19:59:20 529

原创 HarmonyOS NEXT - @Provide装饰器和@Consume装饰器:与后代组件双向同步

Provide/@Consume装饰的状态变量有以下特性:@Provide装饰的状态变量自动对其所有后代组件可用,即该变量被“provide”给他的后代组件。由此可见,@Provide的方便之处在于,开发者不需要多次在组件之间传递变量。后代通过使用@Consume去获取@Provide提供的变量,建立在@Provide和@Consume之间的双向数据同步,与@State/@Link不同的是,前者可以在多层级的父子组件之间传递。

2024-07-15 19:42:43 919

原创 HarmonyOS NEXT - @Link装饰器:父子双向同步

Link装饰的变量与其父组件中的数据源共享相同的值。

2024-07-15 19:35:17 976

原创 HarmonyOS NEXT - @Prop装饰器:父子单向同步

Prop装饰的变量和父组件建立单向的同步关系:@Prop变量允许在本地修改,但修改后的变化不会同步回父组件。当数据源更改时,@Prop装饰的变量都会更新,并且会覆盖本地所有更改。因此,数值的同步是父组件到子组件(所属组件),子组件数值的变化不会同步到父组件。

2024-07-12 19:46:52 925

原创 HarmonyOS NEXT - 管理组件拥有的状态 @State装饰器:组件内状态

State装饰的变量,与声明式范式中的其他被装饰变量一样,是私有的,只能从组件内部访问,在声明时必须指定其类型和本地初始化。初始化也可选择使用命名参数机制从父组件完成初始化。@State装饰的变量拥有以下特点:@State装饰的变量与子组件中的@Prop装饰变量之间建立单向数据同步,与@Link、@ObjectLink装饰变量之间建立双向数据同步。@State装饰的变量生命周期与其所属自定义组件的生命周期相同。

2024-07-12 19:34:01 768

原创 HarmonyOS NEXT - 状态管理概述

在前文的描述中,我们构建的页面多为静态界面。如果希望构建一个动态的、有交互的界面,就需要引入“状态”的概念。效果图上面的示例中,用户与应用程序的交互触发了文本状态变更,状态变更引起了UI渲染,UI从“Hello World”变更为“Hello ArkUI”。在声明式UI编程框架中,UI是程序状态的运行结果,用户构建了一个UI模型,其中应用的运行时的状态是参数。当参数改变时,UI作为返回结果,也将进行对应的改变。这些运行时的状态变化所带来的UI的重新渲染,在ArkUI中统称为状态管理机制。

2024-07-12 19:17:00 741

原创 HarmonyOS NEXT - @Require装饰器:校验构造传参

当@Require装饰器和@Prop、@State、@Provide、@BuilderParam、普通变量(无状态装饰器修饰的变量)结合使用时,在构造该自定义组件时,@Prop、@State、@Provide、@BuilderParam和普通变量(无状态装饰器修饰的变量)必须在构造时传参。

2024-07-12 19:14:33 201

原创 HarmonyOS NEXT - @AnimatableExtend装饰器:定义可动画属性

AnimatableExtend装饰器用于自定义可动画的属性方法,在这个属性方法中修改组件不可动画的属性。在动画执行过程时,通过逐帧回调函数修改不可动画属性值,让不可动画属性也能实现动画效果。可动画属性:如果一个属性方法在animation属性前调用,改变这个属性的值可以生效animation属性的动画效果,这个属性称为可动画属性。比如height、width、backgroundColor、translate属性,Text组件的fontSize属性等。

2024-07-12 19:12:28 2127

原创 HarmonyOS NEXT - stateStyles:多态样式

stateStyles是属性方法,可以根据UI内部状态来设置样式,类似于css伪类,但语法不同。ArkUI提供以下五种状态:focused:获焦态。normal:正常态。pressed:按压态。disabled:不可用态。selected10+:选中态。

2024-07-12 16:56:37 381

原创 HarmonyOS NEXT - @Extend装饰器:定义扩展组件样式

在前文的示例中,可以使用@Styles用于样式的扩展,在@Styles的基础上,我们提供了@Extend,用于扩展原生组件样式。说明从API version 9开始,该装饰器支持在ArkTS卡片中使用。从API version 11开始,该装饰器支持在元服务中使用。

2024-07-12 16:53:48 1013

原创 HarmonyOS NEXT - @Styles装饰器:定义组件重用样式

如果每个组件的样式都需要单独设置,在开发过程中会出现大量代码在进行重复样式设置,虽然可以复制粘贴,但为了代码简洁性和后续方便维护,我们推出了可以提炼公共样式进行复用的装饰器@Styles。@Styles装饰器可以将多条样式设置提炼成一个方法,直接在组件声明的位置调用。通过@Styles装饰器可以快速定义并复用自定义样式。用于快速定义并复用自定义样式。说明从API version 9开始,该装饰器支持在ArkTS卡片中使用。从API version 11开始,该装饰器支持在元服务中使用。

2024-07-12 16:50:11 234

原创 HarmonyOS NEXT - wrapBuilder:封装全局@Builder

全局@Builder作为wrapBuilder的参数返回WrappedBuilder对象,实现可以进行赋值和传递。说明从API version 11开始使用。

2024-07-12 16:47:13 243

原创 HarmonyOS NEXT - @BuilderParam装饰器:引用@Builder函数

当开发者创建了自定义组件,并想对该组件添加特定功能时,例如在自定义组件中添加一个点击跳转操作。若直接在组件内嵌入事件方法,将会导致所有引入该自定义组件的地方均增加了该功能。为解决此问题,ArkUI引入了@BuilderParam装饰器,@BuilderParam用来装饰指向@Builder方法的变量(@BuilderParam是用来承接@Builder函数的),开发者可在初始化自定义组件时对此属性进行赋值,为自定义组件增加特定的功能。该装饰器用于声明任意UI描述的一个元素,类似slot占位符。说明。

2024-07-12 16:43:18 583

原创 HarmonyOS NEXT - 报名申请(HarmonyOS NEXT Beta 版开发者及先锋用户招募(第一期)——先锋用户)

,请您在完成保密协议签署、通过报名答题后,回到本页面填写报名信息。若完成其中一项步骤后报名条件状态未更新,请您刷新本页面后稍作等待。如果您有更多疑问,您也可以通过。导读:此页面用于先锋用户报名申请(具备有应用开发经验的非专业用户,限量招募。下面的链接或者直接点击。,先到先得,招满即止。

2024-06-21 17:40:55 2828 4

原创 HarmonyOS NEXT - 方舟字节码文件格式(6-21)开发者大会更新

方舟字节码文件是ArkTS/TS/JS编译后的二进制产物。本文详细介绍了方舟字节码文件的格式,旨在帮助开发者深入了解构成字节码的各个部分,从而指导开发者进行字节码的分析和修改工作。

2024-06-21 15:19:38 1444

原创 HarmonyOS NEXT - 方舟字节码基本原理(6-21)开发者大会更新

方舟字节码(Ark Bytecode),是由方舟编译器编译ArkTS/TS/JS生成的,提供给方舟运行时解释执行的二进制文件,字节码中的主要内容是方舟字节码指令。本文旨在介绍方舟字节码指令相关的设计,将在后续章节中对构成指令的重要概念和具体的指令格式及含义进行说明,帮助开发者了解方舟字节码指令,指导开发者进行指令相关的特性开发工作。一条方舟字节码指令,由操作码(指令的名称)和指令入参列表组成。操作码包含无前缀的操作码和有前缀的操作码两种情况。

2024-06-21 15:18:16 2703

原创 HarmonyOS NEXT - @Builder装饰器:自定义构建函数

定义的语法:使用方法:允许在自定义组件内定义一个或多个@Builder方法,该方法被认为是该组件的私有、特殊类型的成员函数。自定义构建函数可以在所属组件的build方法和其他自定义构建函数中调用,但不允许在组件外调用。在自定义函数体中,this指代当前所属组件,组件的状态变量可以在自定义构建函数内访问。建议通过this访问自定义组件的状态变量而不是参数传递。定义的语法:使用方法:如果不涉及组件状态变化,建议使用全局的自定义构建方法。

2024-06-21 14:06:52 439

原创 HarmonyOS NEXT - 自定义组件冻结功能

自定义组件处于非激活状态时,状态变量将不响应更新,即@Watch不会调用,状态变量关联的节点不会刷新。通过freezeWhenInactive属性来决定是否使用冻结功能,不传参数时默认不使用。支持的场景有:页面路由,TabContent,LazyforEach,Navigation。说明从API version 11开始,支持自定义组件冻结功能。

2024-06-20 21:01:14 857

原创 HarmonyOS NEXT - 自定义组件的自定义布局

例如,在本示例中,在onMeasureSize中初始化组件大小size=100,后续的每一个子组件size会加上上一个子组件大小的一半,实现组件大小递增的效果。而在onPlaceChildren中,定义startPos=300,设置每一个子组件的位置为startPos减去子组件自身的高度,所有子组件右下角一致在顶点位置(300,300),实现一个从右下角开始展示组件的类Stack组件。:组件每次布局时触发,计算子组件的尺寸,其执行时间先于onPlaceChildren。

2024-06-20 20:57:44 291

原创 HarmonyOS NEXT - 页面和自定义组件生命周期

自定义组件的创建:自定义组件的实例由ArkUI框架创建。初始化自定义组件的成员变量:通过本地默认值或者构造方法传递参数来初始化自定义组件的成员变量,初始化顺序为成员变量的定义顺序。如果开发者定义了aboutToAppear,则执行aboutToAppear方法。在首次渲染的时候,执行build方法渲染系统组件,如果子组件为自定义组件,则创建自定义组件的实例。在首次渲染的过程中,框架会记录状态变量和组件的映射关系,当状态变量改变时,驱动其相关的组件刷新。

2024-06-20 20:41:44 688

原创 HarmonyOS NEXT - 自定义组件 - 创建自定义组件

以下示例展示了自定义组件的基本用法。@Componentbuild() {// HelloComponent自定义组件组合系统组件Row和TextRow() {// 状态变量message的改变驱动UI刷新,UI从'Hello, World!'刷新为'Hello, ArkUI!})注意如果在另外的文件中引用该自定义组件,需要使用export关键字导出,并在使用的页面import该自定义组件。

2024-06-20 20:38:35 826

原创 HarmonyOS NEXT - UI范式 - 基本语法 - 声明式UI描述

基本语法概述在初步了解了ArkTS语言之后,我们以一个具体的示例来说明ArkTS的基本组成。如下图所示,当开发者点击按钮时,文本内容从“Hello World”变为“Hello ArkUI”。示例效果图本示例中,ArkTS的基本组成如下所示。ArkTS的基本组成说明自定义变量不能与基础通用属性/事件名重复。装饰器: 用于装饰类、结构、方法以及变量,并赋予其特殊的含义。如上述示例中@Entry、@Component和@State都是装饰器,表示自定义组件,表示该自定义组件为入口组件,

2024-06-20 20:28:02 856

原创 HarmonyOS NEXT - 适配指导案例

本文通过更多应用场景中的案例,提供在ArkTS语法规则下将TS代码适配成ArkTS代码的建议。各章以ArkTS语法规则英文名称命名,每个案例提供适配前的TS代码和适配后的ArkTS代码。

2024-06-20 20:14:15 1320

原创 HarmonyOS NEXT - 从TypeScript到ArkTS的适配规则(三)

级别:错误ArkTS不支持通用模块定义(UMD)。因为在ArkTS中没有“脚本”的概念(相对于“模块”)。此外,在ArkTS中,导入是编译时而非运行时特性。改用export和import语法。TypeScript// 脚本中ArkTS// 程序中相关约束不支持在模块名中使用通配符。

2024-06-20 17:40:50 999

原创 HarmonyOS NEXT - 从TypeScript到ArkTS的适配规则(二)

在TypeScript中,instanceof运算符的左操作数的类型必须为any类型、对象类型,或者它是类型参数,否则结果为false。在ArkTS中,instanceof运算符的左操作数的类型必须为引用类型(例如,对象、数组或者函数),否则会发生编译时错误。由于在ArkTS中,对象布局在编译时是确定的、并且不能在运行时被改变,所以不支持使用for .. in迭代一个对象的属性。由于在ArkTS中,对象布局在编译时是已知的并且在运行时无法修改,因此,不支持in运算符。在静态语言中,对象的布局是确定的。

2024-06-20 15:52:28 628

原创 HarmonyOS NEXT - 从TypeScript到ArkTS的适配规则(一)

本节罗列了ArkTS不支持或部分支持的TypeScript特性。完整的列表以及详细的代码示例和重构建议,请参考约束说明。更多案例请参考适配指导案例。

2024-06-19 14:05:53 1004

原创 HarmonyOS NEXT - 从TypeScript到ArkTS的适配指导

从API version 10 Release起,ArkTS的语法规则基于上述设计考虑进行了明确定义,同时,SDK增加了在编译流程中对.ets文件的ArkTS语法检查,通过编译告警或编译失败提示开发者适配新的ArkTS语法。一切看起来正常,但是请注意,为了保证该场景下程序的正确性,引擎总是在运行时进行类型检查,执行类似以下的伪代码。现在想象一下,如果函数notify是某些复杂的负载场景中的一部分,而不仅仅是打印日志,那么在运行时执行像__internal_tostring的类型检查将会是一个性能问题。

2024-06-17 14:10:56 917

原创 HarmonyOS NEXT - ArkTS语言 - 模块、关键字、空安全

SDK对同一个Kit下的接口模块进行了封装,开发者在示例代码中可通过导入Kit的方式来使用Kit所包含的接口能力。在以下示例中,如果一个Person的实例有不为空的spouse属性,且spouse有不为空的nick属性,则输出spouse.nick。否则,这些语句将在执行模块的其他功能之前执行。每个模块都有其自己的作用域,即,在模块中创建的任何声明(变量、函数、类等)在该模块之外都不可见,除非它们被显式导出。方式三可能会导入过多无需使用的模块,导致编译后的HAP包太大,占用过多资源,请谨慎使用。

2024-06-17 14:01:41 978

原创 HarmonyOS NEXT - ArkTS语言 - 接口

泛型类型的类型参数可以绑定。例如,HashMap容器中的Key类型参数必须具有哈希方法,即它应该是可哈希的。这样可以不指定实际的类型实参,而只使用泛型类型名称。在上面的例子中,Key类型扩展了Hashable,Hashable接口的所有方法都可以为key调用。继承接口包含被继承接口的所有属性和方法,还可以添加自己的属性和方法。泛型类型和函数允许创建的代码在各种类型上运行,而不仅支持单一类型。任何一个类的实例只要实现了特定接口,就可以通过该接口实现多态。接口是定义代码协定的常见方式。

2024-06-17 13:39:28 341

原创 HarmonyOS NEXT - ArkTS语言 - 类

而实例方法既可以访问静态字段,也可以访问实例字段,包括类的私有字段。具体方法为,为同一个方法写入多个同名但签名不同的方法头,方法实现紧随其后。继承类可以新增定义字段和方法,也可以覆盖其基类定义的方法。重写的方法必须具有与原始方法相同的参数类型和相同或派生的返回类型。包含implements子句的类必须实现列出的接口中定义的所有方法,但使用默认实现定义的方法除外。静态字段属于类本身,类的所有实例共享一个静态字段。public修饰的类成员(字段、方法、构造函数)在程序的任何可访问该类的地方都是可见的。

2024-06-17 10:58:15 712

原创 HarmonyOS NEXT - ArkTS语言 - 函数篇

在下例中,z是执行f时创建的g箭头函数实例的引用。函数的最后一个参数可以是rest参数。具体方法为,为同一个函数写入多个同名但签名不同的函数头,函数实现紧随其后。闭包是由函数及声明该函数的环境组合而成的。不需要返回值的函数的返回类型可以显式指定为void或省略标注。如果函数中定义的变量与外部作用域中已有实例同名,则函数内的局部变量定义将覆盖外部定义。如果可以从函数体内推断出函数返回类型,则可在函数声明中省略标注返回类型。函数中定义的变量和其他实例仅可以在函数内部访问,不能从外部访问。

2024-06-17 10:15:23 1335

原创 HarmonyOS NEXT - ArkTS语言介绍 - 基本知识{声明、类型、运算符,语句}

ArkTS是一种为构建高性能应用而设计的编程语言。ArkTS在继承TypeScript语法的基础上进行了优化,以提供更高的性能和开发效率。随着移动设备在人们的日常生活中变得越来越普遍,许多编程语言在设计之初没有考虑到移动设备,导致应用的运行缓慢、低效、功耗大,针对移动环境的编程语言优化需求也越来越大。ArkTS是专为解决这些问题而设计的,聚焦于提高运行效率。目前流行的编程语言TypeScript是在JavaScript基础上通过添加类型定义扩展而来的,而ArkTS则是TypeScript的进一步扩展。

2024-06-16 21:23:38 1861 1

原创 HarmonyOS NEXT - 初识ArkTS语言

在UI开发框架中,与UI相关联的数据可以在组件内使用,也可以在不同组件层级间传递,比如父子组件之间、爷孙组件之间,还可以在应用全局范围内传递或跨设备传递。另外,从数据的传递形式来看,可分为只读的单向传递和可变更的双向传递。同时,由于所有类型在程序实际运行前都是已知的,编译器可以验证代码的正确性,从而减少运行时的类型检查,有助于性能提升。:ArkTS定义了声明式UI描述、自定义组件和动态扩展UI元素的能力,再配合ArkUI开发框架中的系统组件及其相关的事件方法、属性方法等共同构成了UI开发的主体。

2024-06-14 17:32:49 311

原创 HarmonyOS NEXT - 资源分类与访问

应用开发过程中,经常需要用到颜色、字体、间距、图片等资源,在不同的设备或配置中,这些资源的值可能不同。应用资源:借助资源文件能力,开发者在应用中自定义资源,自行管理这些资源在不同的设备或配置中的表现。系统资源:开发者直接使用系统预置的资源定义(即分层参数,同一资源ID在设备类型、深浅色等不同配置下有不同的取值)。

2024-06-14 17:31:14 769

原创 HarmonyOS NEXT - module对象内部结构(二)

场景示例:某应用,针对相同设备型号,同时在网的为使用API 5和API 6开发的两个软件版本,则允许上架2个entry类型的安装包,分别支持到对应设备侧软件版本的分发。场景示例:某应用,针对相同设备型号,同时在网的为使用API 5和API 6开发的两个软件版本,则允许上架2个entry类型的安装包,分别支持到对应设备侧软件版本的分发。场景示例:某应用,针对相同设备型号,同时在网的为使用API 5和API 6开发的两个软件版本,则允许上架2个entry类型的安装包,分别支持到对应设备侧软件版本的分发。

2024-06-14 17:23:40 841

原创 HarmonyOS NEXT - module对象内部结构(一)

module对象包含HAP的配置信息。属性名称含义数据类型是否可缺省服务中心图标露出的Ability,常驻进程拉起时会启动mainAbility。字符串可缺省,缺省值为空。package标识HAP的包结构名称,在应用内保证唯一性。采用反向域名格式(建议与HAP的工程目录保持一致)。字符串长度为1-127个字节。字符串不可缺省。name标识HAP的类名。采用反向域名方式标识,前缀要与同级的package标签指定的包名一致,也可采用"."开头的命名方式。字符串长度不超过255字节。

2024-06-14 15:49:02 724

原创 HarmonyOS NEXT - deviceConfig内部结构

deviceConfig包含设备上的应用配置信息,可以包含default、tv、car、wearable等属性。default标签内的配置适用于所有通用设备,其他设备类型如果有特殊的需求,则需要在该设备类型的标签下进行配置。

2024-06-14 15:41:04 773

原创 HarmonyOS NEXT - app对象内部结构

标识应用程序是否开启asan检测,用于辅助定位buffer越界造成的crash问题。- true:当前工程开启asan检测。- false:当前工程不开启asan检测。Release版本不支持开启asan检测。

2024-06-14 15:39:04 531

原创 HarmonyOS NEXT - 应用配置文件概述(FA模型)

每个应用项目必须在项目的代码目录下加入配置文件,这些配置文件会向编译工具、操作系统和应用市场提供描述应用的基本信息。应用配置文件需申明以下内容:应用的软件Bundle名称,应用的开发厂商,版本号等应用的基本配置信息,这些信息被要求设置在app这个字段下。应用的组件的基本信息,包括所有的Ability,设备类型,组件的类型以及当前组件所使用的语法类型。应用在具体设备上的配置信息,这些信息会影响应用在设备上的具体功能。

2024-06-14 15:37:30 268

原创 HarmonyOS NEXT - module.json5配置文件(三)

xxxldpi:表示大规模的屏幕密度(Extra Extra Extra Large-scale Dots Per Inch),适用于dpi取值为(480, 640]的设备。- xxldpi:表示大规模的屏幕密度(Extra Extra Large-scale Dots Per Inch),适用于dpi取值为(320,480]的设备。- ldpi:表示大规模的屏幕密度(Large-scale Dots Per Inch),适用于dpi取值为(160,240]的设备。此标签用于支持对元服务的配置。

2024-06-14 15:33:52 753

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除