HarmonyOS7 弹簧弹性动画:Curve.FastOutSlowIn 实现弹性回弹效果

发布时间:2026/9/11 21:29:58

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提供了物理弹簧。根据场景选择合适的曲线就能做出从稳重到活泼的各种弹性效果。
延伸阅读

更多相关文章

2026/9/12 4:37:57

2026知名的亚太EMBA中立测评,民营企业家择校参考

一、择校测评前言民营企业家、企业创始人选EMBA,大多纠结国际化适配、课程实用性、圈层精准度与证书认可度,很难横向对比院校差异。本文围绕知名的亚太EMBA主流项目,从全球办学排名、院校办学定位、课程体系、学员圈层、产业资源五大客观维度…

2026/9/11 10:50:53

Firewalld 防火墙命令新手实战指南

在 Linux 服务器运维中,防火墙往往是那道“看不见的墙”。很多时候,服务明明已经启动,端口也在监听,但外部就是无法访问。排查半天才发现,是防火墙规则把流量拦在了门外。对于刚接触 CentOS 7 或 RHEL 系列的朋友来说&…

2026/9/12 4:34:47

Java StringEntry接口设计与实现最佳实践

1. StringEntry接口的设计背景与核心诉求在软件开发中,数据结构的抽象与封装一直是提升代码复用性和可维护性的关键手段。StringEntry这个接口概念的提出,本质上是为了解决字符串类型数据在多种场景下的统一操作问题。我最近在重构一个历史遗留系统时&am…

2026/9/12 4:34:47

海光DCU接入K8s:整卡、共享与vDCU调度实战解析

如果你接过“把一批海光 DCU 节点接进 Kubernetes,再让上层 AI 平台和 DeepSeek 推理服务跑起来”这种需求,第一反应大概率是:装个驱动、部署个 Device Plugin 不就行了?真动手之后才会发现,整卡、共享、vDCU 虚拟化是…

2026/9/12 4:34:47

2026年软考高级系统分析师论文备考指南与高分技巧

1. 2026年软考高级系统分析师论文备考指南作为国内IT领域最具含金量的职业资格认证之一,软考高级系统分析师(以下简称"系分")的论文环节一直是考生面临的"拦路虎"。不同于选择题和案例分析,论文写作不仅需要扎…

2026/9/12 4:34:47

Linux下TFTP服务器安装配置与优化指南

1. Linux下TFTP服务器的安装与配置指南在嵌入式开发和网络设备维护领域,TFTP(Trivial File Transfer Protocol)作为轻量级文件传输协议,因其实现简单、资源占用少的特点,成为固件更新、配置文件传输的标配工具。不同于…

2026/9/12 4:34:47

ThinkPHP在线客服系统实战:多坐席分配与部署调优全解析

简介:基于ThinkPHP框架打造的运营级在线客服系统源码,面向需要快速搭建网页客服、多坐席协作与智能客服平台的开发者和企业技术团队,可直接用于电商、官网、SaaS产品等场景的客户服务模块。系统包含实时聊天、坐席状态管理、访客分配、智能自…

2026/9/12 4:29:47

PyMC 采样与推断方法实战指南:MCMC、变分推断与诊断调优

PyMC 采样与推断方法实战指南:MCMC、变分推断与诊断调优 【免费下载链接】scientific-agent-skills Turn any AI agent into an AI Scientist. The #1 Agent Skills library for science, used by 190,000 scientists worldwide. 165 ready-to-use validated skills…

2026/9/12 2:05:33

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/12 3:55:12

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/9 16:31:09

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/12 0:04:17

MATLAB仿生优化框架:长鼻浣熊算法多策略融合实现

简介:本资源是一份面向智能优化算法研究者与MATLAB初学者的仿生智能算法实践代码包,聚焦于长鼻浣熊优化算法(COA)的多策略改进与性能验证。针对传统COA易陷局部最优、收敛精度不足等问题,作者融合Circle映射初始化提升…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 JavaWeb 的校园一卡通管理系统的设计与实现 基于 JavaWeb 的校园卡业务管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/12 0:04:17

【JAVA毕设源码分享】基于 Java 的图书馆借阅管理平台的搭建与实现 基于 Java 的图书馆综合管理系统(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/9/10 12:32:02

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/10 15:19:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/10 15:49:53

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码