[UWP]使用SpringAnimation创建有趣的动画

看不見的法師
发布: 2025-09-23 08:19:34
原创
493人浏览过

1. 什么是自然动画

最近,我使用了弹簧动画(SpringAnimation)制作了两个番茄钟。关于弹簧动画,官方文档已经提供了足够详细的说明,本文将摘录一些关键内容。

在传统的UI设计中,关键帧动画(KeyFrameAnimation)是描述运动的主要方式。这种方法为设计师和开发者提供了定义开始、结束和内插的多种方式。尽管在许多情况下非常有效,但关键帧动画缺乏动态性,运动效果在不同情况下都显得单一。

[UWP]使用SpringAnimation创建有趣的动画相反,物理引擎能够提供更生动和动态的动画效果,但对设计师和开发者的控制力较少,难以整合到传统UI中。

自然动画(NaturalMotionAnimation)旨在弥合这种差距,实现控制力和运动动态性的平衡。它允许对关键动画元素(如开始和结束)进行控制,同时保持运动的自然和生动。

  1. 什么是弹簧动画

[UWP]使用SpringAnimation创建有趣的动画自从Fall Creators Update发布以来,UWP引入了新的动画类型:弹簧动画(SpringAnimation)。与传统的贝塞尔曲线动画相比,弹簧运动具有不稳定性,通常能引发观看者有趣且愉悦的情感反应。它提供了以下功能:

• 定义开始和结束值。
• 使用InteractionTracker定义InitialVelocity并绑定到输入。
• 定义特定于运动的属性(如弹簧的DampingRatio)。
登录后复制

具体来说:

• DampingRatio – 表示在动画中使用的弹簧运动的阻尼级别。
• Period – 弹簧执行单次振荡所花费的时间。
• Final、Starting Value – 定义弹簧运动的开始和结束位置(如果未定义,则开始值和最终值将是当前值)。
• Initial Velocity – 运动的编程初始速度。
登录后复制

其中,DampingRatio是最重要的属性。

Damping Ratio Value 描述
DampingRatio = 0 Undamped – 弹簧将振荡很长时间
DampingRatio = 1 Critically damped – 弹簧不会振荡
DampingRatio > 1 Overdamped – 弹簧将通过突然减速而不振荡快速到达其目的地

定义好这些属性后,可以将弹簧动画的NaturalMotionAnimation传入CompositionObject的StartAnimation或InteractionTracker的InertiaModifier的Motion属性。

  1. 使用弹簧动画

使用弹簧动画的代码与一般合成动画相似,只需将动画改为带

Spring
登录后复制
的函数:

var springAnimation = _compositor.CreateSpringVector3Animation();
springAnimation.DampingRatio = 0.5f;
springAnimation.Period = TimeSpan.FromMilliseconds(200);
springAnimation.FinalValue = new Vector3(offset, 0);
visual.StartAnimation(nameof(visual.Offset), springAnimation);
登录后复制

上面的代码定义了一个位移的Spring动画,效果如下:

[UWP]使用SpringAnimation创建有趣的动画

Period
登录后复制
改为50毫秒,
DampingRatio
登录后复制
改为0.85f,效果如下:

[UWP]使用SpringAnimation创建有趣的动画(偶尔使用全白背景也不错。)

  1. 其它组合

在处理Offset和Scale/Size动画的常见情况下,Windows设计团队为不同类型的弹簧推荐了以下DampingRatio和Period值:

AI建筑知识问答
AI建筑知识问答

用人工智能ChatGPT帮你解答所有建筑问题

AI建筑知识问答 22
查看详情 AI建筑知识问答
Property Normal Spring Dampened Spring Less-Dampened Spring
Offset Damping Ratio = 0.8
Period = 50 ms
Damping Ratio = 0.85
Period = 50 ms
Damping Ratio = 0.65
Period = 60 ms
Scale/Size Damping Ratio = 0.7
Period = 50 ms
Damping Ratio = 0.8
Period = 50 ms
Damping Ratio = 0.6
Period = 60 ms

有兴趣的可以下载Xaml-Controls-Gallery来尝试这些组合:

[UWP]使用SpringAnimation创建有趣的动画

  1. 结语

您可以安装我的番茄钟应用来试玩这些动画,安装地址:

一个番茄钟

弹簧动画真的让人欲罢不能。如果与用户输入关联,运动还可以根据用户的速度进行相应调整。这部分内容在官方文档中有详细的例子,由于我的番茄钟应用不需要这个功能,所以没有深入研究。有兴趣的朋友可以参考官方文档。

  1. 参考

弹簧动画 - Windows UWP applications Microsoft Docs

自然运动动画 - Windows UWP applications Microsoft Docs

NaturalMotionAnimation Class (Windows.UI.Composition) - Windows UWP applications Microsoft Docs

KeyFrameAnimation Class (Windows.UI.Composition) - Windows UWP applications Microsoft Docs

microsoft_Xaml-Controls-Gallery

  1. 源码

SpringTextView.xaml.cs at master

KonosubaView.xaml.cs at master

以上就是[UWP]使用SpringAnimation创建有趣的动画的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号