HarmonyOS7 弹簧弹性动画:Curve.FastOutSlowIn 实现弹性回弹效果
📅 2026/7/23 22:18:17
👁️ 次浏览
文章目录前言效果展示实现原理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提供了物理弹簧。根据场景选择合适的曲线就能做出从稳重到活泼的各种弹性效果。
很多做短视频、AI翻唱、音乐剪辑的小伙伴都会遇到一个问题:
想提取歌曲伴奏、去除人声、制作AI翻唱,但是不知道用什么工具。
今天分享一款免费的AI音频分离工具:
Ultimate Vocal Remover 5.6(UVR5)
它可以利用AI模型自…
📅 2026/7/23 22:18:17
文章目录前言应用场景onTouch 和 Gesture 的区别代码详解触控点接口状态变量信息面板触控区域触控点可视化手指指示点常见问题进阶技巧写在最后前言
大部分手势 API(PanGesture、PinchGesture 等)都是对底层触控事件的高层封装。但当你需要知道"用…
📅 2026/7/23 22:17:16
文章目录前言效果展示方案设计多层手势共存策略详细实现状态变量日志函数Grid 统计看板statCard Builder三层手势绑定滑动方向判定日志面板踩坑记录写在最后前言
前面十几篇文章分别讲了 ArkUI 的各种手势类型,今天来一个"全家桶"——把点击、长按、双击…
📅 2026/7/23 22:17:16
一、二战考生为什么会卡在瓶颈期
公考圈里流传一句话:"一战拼基础,二战拼心态,三战拼选择。"对于已经走过一遍完整备考流程的考生而言,第二次走进考场时,最难的往往不是知识点本身,而是如何把已经…
📅 2026/7/24 0:42:18
2026 AI建站口碑好的企业推荐都有哪些,大家快来看看吧!据《2026年中国企业数字化建站行业白皮书》披露的一组跟踪数据:在抽样调研的1200家使用AI建站工具的中小企业中,上线满6个月后仍持续续费、且自然搜索流量正向增长的占比仅31…
📅 2026/7/24 0:41:17
2026主流小程序制作平台对比出炉!看看哪个更合你心意?QuestMobile数据显示,截至2026年3月,小程序整体月活用户规模已达10.21亿,其中微信小程序月活达9.73亿。艾瑞咨询《2026年中国小程序生态发展报告》显示,…
📅 2026/7/24 0:41:17
本项目为计算机本科毕业设计,采用 SSM(Spring SpringMVC MyBatis) 作为后端框架,HTMLCSSJavaScript 网页端作为前端,数据库使用 MySQL。系统涵盖用户注册登录、商品发布浏览、商品留言、商品收藏、商品订单、论坛交流…
📅 2026/7/24 0:40:17
大三/大四,不知道毕设做什么?我整理了5个校园场景方向的毕业设计项目,每个都配 完整论文 答辩PPT 源码,技术栈覆盖 SSM、SpringBoot、Vue 和微信小程序。1. 学生请假管理系统
技术栈:SSM HTML MySQL难度࿱…
📅 2026/7/24 0:40:17
做涂料和树脂的朋友,最怕啥?不是原料涨得离谱,而是明明用了大牌原料,做出来的漆却总有点“不对劲”。光泽度差一点,硬度不够硬,或者储存稳定性时好时坏。这种时候,别急着怪配方,先回头看看你用的核心单体到底是个什么成色。很多采购为了省那几块钱一公斤的成本,随便找…
📅 2026/7/24 0:39:40
大家好,我是一名编程初学者,同时这也是我编程学习之路上的第一篇博客。在这里,我想要向大家介绍我的一些想法和规划。a.自我介绍我是一个刚刚接触编程的新手,目前在学习c语言,我对编程世界充满了强烈的好奇。当然&…
📅 2026/7/24 0:00:05
srcampy /libsrcampy 名称释义先明确结论: 官方文档没有公布标准化英文全称,是地平线内部项目缩写;行业公认拆解如下:srcampy Source Amplifier Python bindingsrc Source(图像源:MIPI Sensor、视频源&am…
📅 2026/7/24 0:01:06
该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…
📅 2026/7/24 0:01:06
1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…
📅 2026/7/23 1:06:38
1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…
📅 2026/7/23 1:06:38
更多请点击:
https://intelliparadigm.com
第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…
📅 2026/7/23 1:06:38
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/23 7:06:56
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/23 17:07:28
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/23 5:06:50