首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

鸿蒙5.0开发进阶:ArkTS组件-关键帧动画 (keyframeAnimateTo)

  • 25-02-21 20:42
  • 3056
  • 12492
blog.csdn.net

往期鸿蒙5.0全套实战文章必看:(文中附带全栈鸿蒙5.0学习资料)

  • 鸿蒙开发核心知识点,看这篇文章就够了

  • 最新版!鸿蒙HarmonyOS Next应用开发实战学习路线

  • 鸿蒙HarmonyOS NEXT开发技术最全学习路线指南

  • 鸿蒙应用开发实战项目,看这一篇文章就够了(部分项目附源码)


关键帧动画 (keyframeAnimateTo)

在UIContext中提供keyframeAnimateTo接口来指定若干个关键帧状态,实现分段的动画。同属性动画,布局类改变宽高的动画,内容都是直接到终点状态,例如文字、Canvas的内容等,如果要内容跟随宽高变化,可以使用renderFit属性配置。

说明

从API Version 11开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。

该接口为UIContext类的成员函数,需要通过UIContext实例对象调用。

keyframeAnimateTo(param: KeyframeAnimateParam, keyframes: Array): void

设置关键帧动画。

元服务API: 从API version 12开始,该接口支持在元服务中使用。

系统能力: SystemCapability.ArkUI.ArkUI.Full

参数:

参数名类型必填描述
paramKeyframeAnimateParam是关键帧动画的整体动画参数。
keyframesArray<KeyframeState>是所有的关键帧状态。

KeyframeAnimateParam对象说明

元服务API: 从API version 12开始,该接口支持在元服务中使用。

名称参数类型是否必填描述
delaynumber否

动画的整体延时时间,单位为ms(毫秒),默认不延时播放。

默认值:0

说明:

delay>=0为延迟播放,delay<0表示提前播放。对于delay<0的情况:当delay的绝对值小于实际动画时长,动画将在开始后第一帧直接运动到delay绝对值的时刻的状态;当delay的绝对值大于等于实际动画时长,动画将在开始后第一帧直接运动到终点状态。其中实际动画时长等于单次动画时长乘以动画播放次数。

iterationsnumber否

动画播放次数。默认播放一次,设置为-1时表示无限次播放。设置为0时表示无动画效果。

默认值:1

取值范围:[-1, +∞)

onFinish() => void否动画播放完成回调。当keyframe动画所有次数播放完成后调用。

KeyframeState对象说明

元服务API: 从API version 12开始,该接口支持在元服务中使用。

名称参数类型是否必填描述
durationnumber是

该段关键帧动画的持续时间,单位为毫秒。

取值范围:[0, +∞)

说明:

- 设置小于0的值时按0处理。

- 设置浮点型类型的值时,向下取整。例如,设置值为1.2,按照1处理。

curveCurve| string | ICurve否

该关键帧使用的动画曲线。

默认值:Curve.EaseInOut

说明:

由于springMotion、responsiveSpringMotion、interpolatingSpring曲线时长不生效,故不支持这三种曲线。

event() => void是指定在该关键帧时刻状态的闭包函数,即在该关键帧时刻要达到的状态。

示例

该示例主要演示如何通过keyframeAnimateTo来设置关键帧动画。

  1. // xxx.ets
  2. import { UIContext } from '@kit.ArkUI';
  3. @Entry
  4. @Component
  5. struct KeyframeDemo {
  6. @State myScale: number = 1.0;
  7. uiContext: UIContext | undefined = undefined;
  8. aboutToAppear() {
  9. this.uiContext = this.getUIContext?.();
  10. }
  11. build() {
  12. Column() {
  13. Circle()
  14. .width(100)
  15. .height(100)
  16. .fill("#46B1E3")
  17. .margin(100)
  18. .scale({ x: this.myScale, y: this.myScale })
  19. .onClick(() => {
  20. if (!this.uiContext) {
  21. console.info("no uiContext, keyframe failed");
  22. return;
  23. }
  24. this.myScale = 1;
  25. // 设置关键帧动画整体播放3次
  26. this.uiContext.keyframeAnimateTo({ iterations: 3 }, [
  27. {
  28. // 第一段关键帧动画时长为800ms,scale属性做从1到1.5的动画
  29. duration: 800,
  30. event: () => {
  31. this.myScale = 1.5;
  32. }
  33. },
  34. {
  35. // 第二段关键帧动画时长为500ms,scale属性做从1.5到1的动画
  36. duration: 500,
  37. event: () => {
  38. this.myScale = 1;
  39. }
  40. }
  41. ]);
  42. })
  43. }.width('100%').margin({ top: 5 })
  44. }
  45. }

鸿蒙5.0开发进阶全套学习资料
微信名片
注:本文转载自blog.csdn.net的懂你的大海的文章"https://blog.csdn.net/Androidbye/article/details/145548958"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

135
HarmonyOS
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top