HarmonyOS7 弹簧弹性动画:Curve.FastOutSlowIn 实现弹性回弹效果
文章目录前言效果展示实现原理Curve.FastOutSlowIn圆角变化的形变效果代码详解状态变量动画组件弹簧右移弹簧回弹弹性缩放全部恢复真正的弹簧动画常见问题写在最后前言弹簧动画是一种物理感很强的动画效果——方块移动到目标位置后不是直接停住而是过冲一点再回弹像被弹簧拉过去一样。ArkUI 没有内置的物理弹簧引擎但通过选择合适的 Curve 曲线可以模拟出很接近弹簧效果的弹性动画。今天来聊Curve.FastOutSlowIn这个曲线在弹簧动画中的应用。效果展示一个蓝色方块通过按钮控制“弹簧右移”向右移动 80vp带弹性效果“弹簧回弹”回到原位带弹性效果“弹性缩放”缩放 变形方形变圆形“恢复”所有属性回到初始状态实现原理Curve.FastOutSlowInCurve.FastOutSlowIn的特点是快速出去慢慢回来。用在位移动画上表现为方块快速到达目标位置附近然后在目标位置附近晃一下才停稳。Curve运动特点弹性感Linear匀速无EaseOut先快后慢弱| FastOutSlowIn | 极快启动 极慢停止 | 中等 || Rhythm | 有节奏的过冲回弹 | 强 |FastOutSlowIn的弹性感不如Rhythm那么明显但更克制适合用在不需要太夸张的弹性场景中。圆角变化的形变效果.borderRadius(this.isPressed?40:12)当isPressed为true时圆角变为 4080x80 方块的一半即正圆。配合缩放动画方块在缩小的同时变成圆形视觉上像是被挤压变形了。代码详解状态变量EntryComponentstruct SpringBounceBox{StatespringX:number0StatespringScale:number1StateisPressed:booleanfalse// ...}三个状态变量水平位移、缩放比例、是否按下控制形变。动画组件Column().width(80).height(80).backgroundColor(#4D96FF).borderRadius(this.isPressed?40:12).scale({x:this.springScale,y:this.springScale}).translate({x:this.springX}).animation({duration:800,curve:Curve.FastOutSlowIn})声明式动画配置 800ms 的FastOutSlowIn曲线。位移、缩放、圆角变化都走这个曲线。弹簧右移Button(弹簧右移).onClick((){animateTo({duration:800,curve:Curve.FastOutSlowIn},(){this.springX80})})方块向右移动 80vp。FastOutSlowIn让运动过程快速到达 80vp 附近然后慢慢滑入最终位置。弹簧回弹Button(弹簧回弹).onClick((){animateTo({duration:800,curve:Curve.FastOutSlowIn},(){this.springX0})})回到 X0 的位置。同样有弹性效果回到中心位置时有轻微的回弹感。弹性缩放Button(弹性缩放).onClick((){this.isPressed!this.isPressedanimateTo({duration:600,curve:Curve.FastOutSlowIn},(){this.springScalethis.isPressed?0.5:1.2})})切换方块的状态按下缩小到 0.5 倍 变圆弹起放大到 1.2 倍 变方isPressed的切换在animateTo外面执行瞬切但borderRadius的变化因为有.animation()所以也是平滑过渡的。全部恢复Button(恢复).onClick((){this.isPressedfalseanimateTo({duration:800,curve:Curve.FastOutSlowIn},(){this.springX0this.springScale1})})位移归零、缩放归一、形状变回方形。三个属性同时走弹性过渡。真正的弹簧动画如果想要更真实的弹簧效果有明显的过冲和多次振荡ArkUI 提供了springMotion响应式弹簧动画import{springMotion}fromkit.ArkUIanimateTo({duration:1000,curve:springMotion(0.35,0.8)// damping, stiffness},(){this.springX80})springMotion接收两个参数damping阻尼0~1越大振荡越少stiffness刚度0~1越大弹簧越硬阻尼刚度效果0.30.5多次振荡弹性很强0.50.7适度弹性自然0.80.9轻微弹性稳重常见问题QFastOutSlowIn和Rhythm怎么选FastOutSlowIn是快到慢停没有明显的过冲Rhythm有节奏性的过冲回弹。如果你的场景是方块弹过去停住用FastOutSlowIn如果是点赞弹性放大用Rhythm。Q弹簧动画能用.animation()声明式写法吗可以但springMotion只能在animateTo里使用。.animation()只支持预定义的 Curve 枚举值。弹性动画的时长建议 600~1000ms。太短弹簧来不及振荡太长用户感觉拖泥带水。800ms 是一个不错的平衡点。写在最后弹簧动画的核心是选对 Curve 曲线。FastOutSlowIn提供了轻度弹性Rhythm提供了节奏弹性springMotion提供了物理弹簧。根据场景选择合适的曲线就能做出从稳重到活泼的各种弹性效果。

相关新闻

UVR 5.6安装教程:AI一键分离人声和伴奏(Windows + Mac)

UVR 5.6安装教程:AI一键分离人声和伴奏(Windows + Mac)

很多做短视频、AI翻唱、音乐剪辑的小伙伴都会遇到一个问题: 想提取歌曲伴奏、去除人声、制作AI翻唱,但是不知道用什么工具。 今天分享一款免费的AI音频分离工具: Ultimate Vocal Remover 5.6(UVR5) 它可以利用AI模型自…

2026/7/23 22:18:19 阅读更多 →
HarmonyOS7 多指触控追踪:onTouch 事件与 TouchEvent 详解

HarmonyOS7 多指触控追踪:onTouch 事件与 TouchEvent 详解

文章目录前言应用场景onTouch 和 Gesture 的区别代码详解触控点接口状态变量信息面板触控区域触控点可视化手指指示点常见问题进阶技巧写在最后前言 大部分手势 API(PanGesture、PinchGesture 等)都是对底层触控事件的高层封装。但当你需要知道"用…

2026/7/23 22:17:18 阅读更多 →
HarmonyOS7 手势综合展示:六种手势类型一网打尽 + Grid 数据看板

HarmonyOS7 手势综合展示:六种手势类型一网打尽 + Grid 数据看板

文章目录前言效果展示方案设计多层手势共存策略详细实现状态变量日志函数Grid 统计看板statCard Builder三层手势绑定滑动方向判定日志面板踩坑记录写在最后前言 前面十几篇文章分别讲了 ArkUI 的各种手势类型,今天来一个"全家桶"——把点击、长按、双击…

2026/7/23 22:17:18 阅读更多 →

最新新闻

Linux PipeWire深度解析之pw_context_new调用流程与实战(二十三)

Linux PipeWire深度解析之pw_context_new调用流程与实战(二十三)

简介: CSDN博客专家、《Android系统多媒体进阶实战》作者 博主新书推荐:《Android系统多媒体进阶实战》🚀 Android Audio工程师专栏地址: Audio工程师进阶系列【原创干货持续更新中……】🚀 Android多媒体专栏地址&a…

2026/7/23 22:23:22 阅读更多 →
【MySQL 排错】Navicat 连接 localhost 报 2002 (10061) 完整排查记录(Windows + MySQL 8.4 用户模式)

【MySQL 排错】Navicat 连接 localhost 报 2002 (10061) 完整排查记录(Windows + MySQL 8.4 用户模式)

摘要:本文记录 Windows 下 ZIP 方式安装 MySQL 8.4.10 后,使用 Navicat 连接 localhost 时出现 2002 - Cant connect to server on localhost (10061) 的完整排错过程。从现象、原理、排查命令到根因与解决方案一并整理,并补充安装阶段的常见…

2026/7/23 22:23:22 阅读更多 →
谁还在硬啃组态屏?我直接喂饭

谁还在硬啃组态屏?我直接喂饭

玩组态屏这事吧,说难不难,说简单也真有不少坑。刚入坑那会儿我也是一路踩着雷过来的,今天把几个核心知识点捋一捋,给刚上手的兄弟们省点弯路。先聊选型。很多人上来就盯着尺寸看,7寸还是10寸,其实比尺寸更重…

2026/7/23 22:23:22 阅读更多 →
C语言学习(跟b站鹏哥)

C语言学习(跟b站鹏哥)

下面开始C语言的学习,总结鹏哥C语言重点方便快速回顾复习。适用人员(小白学习c语言,考研408学习C语言,z站学习鹏哥c语言)第二课由C语言编写的为.c文件,需要先进行编译,然后进行链接成为可执行文…

2026/7/23 22:23:22 阅读更多 →
程序员高效驾驭大模型的AI导演工作流

程序员高效驾驭大模型的AI导演工作流

1. 项目概述:程序员如何高效驾驭大模型三年前我第一次接触GPT-3时,花了整整8小时才让模型输出符合需求的代码片段。如今通过系统化的方法沉淀,同样的任务只需30分钟就能完成质量更高的交付。这个转变过程让我意识到:掌握大模型就像…

2026/7/23 22:22:21 阅读更多 →
Linux PipeWire深度解析之pw_thread_loop_in_thread调用流程与实战(二十二)

Linux PipeWire深度解析之pw_thread_loop_in_thread调用流程与实战(二十二)

简介: CSDN博客专家、《Android系统多媒体进阶实战》作者 博主新书推荐:《Android系统多媒体进阶实战》🚀 Android Audio工程师专栏地址: Audio工程师进阶系列【原创干货持续更新中……】🚀 Android多媒体专栏地址&a…

2026/7/23 22:22:21 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻