一、概述
在 HarmonyOS 中,通过 UIContext 提供的 keyframeAnimateTo 接口可以指定若干个关键帧状态,从而实现分段的动画效果。该接口从 API Version 11 开始支持,在元服务中从 API version 12 开始支持使用,系统能力要求为 SystemCapability.ArkUI.ArkUI.Full。
二、使用步骤
(一)获取 UIContext 实例
在组件的生命周期函数(如 aboutToAppear)中获取 UIContext 实例对象,例如:
uiContext: UIContext | undefined = undefined;
aboutToAppear() {
this.uiContext = this.getUIContext?.();
}
(二)设置关键帧动画
创建关键帧状态数组
- 每个关键帧状态由 KeyframeState 对象表示,包含 duration(关键帧动画持续时间,单位毫秒,必填且取值范围 [0, +∞),小于 0 按 0 处理,浮点型向下取整)、curve(动画曲线,默认 Curve.EaseInOut,不支持 springMotion、responsiveSpringMotion、interpolatingSpring 曲线)和 event(在该关键帧时刻要达到的状态闭包函数)。
- 示例:
[
{
// 第一段关键帧动画时长为800ms,scale属性做从1到1.5的动画
duration: 800,
event: () => {
this.myScale = 1.5;
}
},
{
// 第二段关键帧动画时长为500ms,scale属性做从1.5到1的动画
duration: 500,
event: () => {
this.myScale = 1;
}
}
]
设置关键帧动画整体参数并调用接口
- KeyframeAnimateParam 对象包含 delay(动画整体延时时间,单位毫秒,默认 0,delay>=0 为延迟播放,delay<0 表示提前播放且有特殊处理规则)、iterations(动画播放次数,默认 1,-1 表示无限次播放,0 表示无动画效果,取值范围 [-1, +∞))和 onFinish(动画播放完成回调函数)。
- 示例:
this.uiContext.keyframeAnimateTo({ iterations: 3 }, keyframesArray);
三、注意事项
- 布局类改变宽高的动画,内容默认直接到终点状态,若要内容跟随宽高变化,可使用 renderFit 属性配置。
- 在设置关键帧动画参数时,需注意参数的取值范围和默认值,确保动画效果符合预期。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。