HarmonyOS 6 UIContext 关键帧动画 keyframeAnimateTo 使用文档
文章目录接口功能接口定义与参数1. 接口签名2. 参数详解1KeyframeAnimateOptions全局动画配置2keyframes: Array\Keyframe关键帧数组完整示例代码执行流程使用规范1. UIContext 获取规范2. 状态变量绑定规范3. 动画参数最佳实践总结接口功能UIContext.keyframeAnimateTo是 HarmonyOS 提供的关键帧动画核心接口用于实现多阶段连续动画支持自定义每段动画的时长、属性变化同时可配置动画循环次数、帧率范围等全局参数实现比普通动画更灵活的复杂动效。核心能力定义多段连续的关键帧动画如放大→缩小→放大循环配置动画整体循环次数自定义动画执行的帧率范围优化性能绑定 UI 上下文确保动画与组件生命周期同步。接口定义与参数1. 接口签名keyframeAnimateTo(options:KeyframeAnimateOptions,keyframes:ArrayKeyframe):void2. 参数详解1KeyframeAnimateOptions全局动画配置控制整个关键帧动画的通用属性示例中使用核心配置参数名类型说明iterationsnumber动画整体循环次数示例中设置为3代表完整执行所有关键帧3次expectedFrameRateRangeFrameRateRange期望帧率范围约束动画执行的帧率平衡流畅度与性能FrameRateRange 子参数min最小帧率示例10max最大帧率示例120expected目标帧率示例60标准流畅帧率2keyframes: ArrayKeyframe关键帧数组多段动画的核心配置数组中每一个对象代表一段独立的动画按顺序执行。Keyframe 核心参数参数名类型说明durationnumber当前段动画的执行时长单位毫秒mseventfunction当前段动画的属性变化回调在回调中修改组件状态变量驱动动画执行完整示例// xxx.etsimport{UIContext}fromkit.ArkUI;EntryComponentstruct KeyframeDemo{StatemyScale:number1.0;uiContext:UIContext|undefinedundefined;aboutToAppear(){this.uiContextthis.getUIContext?.();}build(){Column(){Circle().width(100).height(100).fill(#46B1E3).margin(100).scale({x:this.myScale,y:this.myScale}).onClick((){if(!this.uiContext){console.info(no uiContext, keyframe failed);return;}this.myScale1;// 设置关键帧动画整体播放3次this.uiContext.keyframeAnimateTo({iterations:3,expectedFrameRateRange:{min:10,max:120,expected:60,}},[{// 第一段关键帧动画时长为800msscale属性做从1到1.5的动画duration:800,event:(){this.myScale1.5;}},{// 第二段关键帧动画时长为500msscale属性做从1.5到1的动画event:(){this.myScale1;}}]);})}.width(100%).margin({top:5})}}运行效果如图代码执行流程组件初始化aboutToAppear生命周期中获取当前组件的UIContext并赋值为动画执行做准备交互触发点击圆形组件先校验UIContext是否有效无效则打印日志并终止初始化状态重置缩放比例myScale 1保证动画起始状态一致执行关键帧动画全局配置动画循环3次帧率 10~120目标60帧第一段800ms组件从原始大小放大到 1.5倍第二段500ms组件从1.5倍缩小回原始大小「放大→缩小」为一个完整周期重复执行3次后动画结束。使用规范1. UIContext 获取规范必须在组件生命周期aboutToAppear中调用this.getUIContext()获取执行动画前必须判空避免空对象导致动画失败示例中已做判空处理。2. 状态变量绑定规范驱动动画的变量如myScale必须用State装饰仅在event回调中修改该变量禁止在回调外直接修改干扰动画。3. 动画参数最佳实践帧率配置expected推荐 60保证流畅度min不低于10避免卡顿循环次数iterations为正整数设置为0无动画设置为-1无限循环官方支持时长配置单段动画时长建议 ≥100ms避免动画过快无视觉效果。总结keyframeAnimateTo是多阶段关键帧动画专用接口依赖UIContext执行核心分为全局配置循环次数、帧率关键帧数组多段动画必须在aboutToAppear获取上下文在event中修改状态变量驱动动画如果这篇文章对你有帮助欢迎点赞、收藏、关注你的支持是持续创作的动力