目录
- 动画
- 简单动画
- 多个属性和过渡
- 顺序动画
- 并行动画
- 重复动画
AnimationAnimationTransitionAnimationTransition.in_back()AnimationTransition.in_bounce()AnimationTransition.in_circ()AnimationTransition.in_cubic()AnimationTransition.in_elastic()AnimationTransition.in_expo()AnimationTransition.in_out_back()AnimationTransition.in_out_bounce()AnimationTransition.in_out_circ()AnimationTransition.in_out_cubic()AnimationTransition.in_out_elastic()AnimationTransition.in_out_expo()AnimationTransition.in_out_quad()AnimationTransition.in_out_quart()AnimationTransition.in_out_quint()AnimationTransition.in_out_sine()AnimationTransition.in_quad()AnimationTransition.in_quart()AnimationTransition.in_quint()AnimationTransition.in_sine()AnimationTransition.linear()AnimationTransition.out_back()AnimationTransition.out_bounce()AnimationTransition.out_circ()AnimationTransition.out_cubic()AnimationTransition.out_elastic()AnimationTransition.out_expo()AnimationTransition.out_quad()AnimationTransition.out_quart()AnimationTransition.out_quint()AnimationTransition.out_sine()
动画¶
Animation 和 AnimationTransition 用于对 Widget 的属性进行动画处理。您必须至少指定一个属性名称和目标值。要使用 Animation,请遵循以下步骤:
设置一个动画对象。
在Widget上使用Animation对象
简单动画¶
要动画化Widget的x或y位置,只需指定动画结束时希望Widget定位到的目标x/y值即可:
anim = Animation(x=100, y=100)
anim.start(widget)
动画将持续1秒,除非指定了 duration。当调用 anim.start() 时,Widget 将从当前的 x/y 位置平滑移动到 (100, 100)。
多个属性和过渡¶
您可以使用 transition`(或 `t= 快捷方式)来动画化多个属性,并使用内置或自定义的过渡函数。例如,要使用 'in_quad' 过渡来动画化位置和大小:
anim = Animation(x=50, size=(80, 80), t='in_quad')
anim.start(widget)
请注意,t= 参数可以是 AnimationTransition 类中某个方法的字符串名称,也可以是您自己的动画函数。
顺序动画¶
要按顺序连接动画,请使用 '+' 运算符。以下示例将在1秒内动画到 x=50,然后在接下来的两秒内将大小动画到 (80, 80):
anim = Animation(x=50) + Animation(size=(80, 80), duration=2.)
anim.start(widget)
并行动画¶
要并行连接动画,请使用 & 运算符。以下示例将在1秒内将位置动画到 (80, 10),同时并行地将大小动画到 (800, 800):
anim = Animation(pos=(80, 10))
anim &= Animation(size=(800, 800), duration=2.)
anim.start(widget)
请注意,在同一属性上创建重叠动画可能会产生意外结果。如果要对同一属性应用多个动画,应通过“+”运算符或使用*on_complete*回调按顺序安排它们,或使用:attr:`~Animation.cancel_all`方法取消之前的动画。
重复动画¶
在 1.8.0 版本加入.
备注
目前仅针对“序列”动画实现了此功能。
要设置动画重复播放,只需将 Sequence.repeat 属性设为 True:
anim = Animation(...) + Animation(...)
anim.repeat = True
anim.start(widget)
如需控制动画的流程,如停止和取消,请使用动画模块中已有的方法。
- class kivy.animation.Animation(**kw)[源代码]¶
-
创建一个可用于动画化Widget的动画定义。
- 参数:
- duration 或 d:浮点数,默认值为 1。
动画持续时间,以秒为单位。
- transition 或 t:字符串或函数
用于动画属性的过渡函数。它可以是
AnimationTransition中某个方法的名称。- step 或 s:浮点数
动画的步进时间,单位为毫秒。默认值为0,表示动画在每一帧都会更新。
要降低动画更新频率,可以将步长值设置为浮点数。例如,若希望以30帧每秒的速度进行动画,可使用 s=1/30。
- 事件:
- on_start:动画,控件
当动画在某个控件上启动时触发。
- on_complete:动画,控件
当动画在某个控件上完成或停止时触发。
- on_progress:动画,控件,进度
当动画进度发生变化时触发。
在 1.4.0 版本发生变更: 添加了 s/step 参数。
在 1.10.0 版本发生变更: step 参数的默认值已从 1/60. 更改为 0。
- property animated_properties¶
返回用于动画的属性。
- static cancel_all(widget, *largs)[源代码]¶
取消所有涉及特定控件/属性列表的动画。参见
cancel。示例:
anim = Animation(x=50) anim.start(widget) # and later Animation.cancel_all(widget, 'x')
在 1.4.0 版本加入.
在 2.1.0 版本发生变更: 如果参数
widget为 None,则所有动画控件都将成为目标并被取消。如果同时提供了largs,则所有动画控件中这些属性的动画将被取消。
- cancel_property(widget, prop)[源代码]¶
即使动画正在运行,也会移除一个属性。该属性将不再被动画化。如果这是唯一/最后一个正在动画化的属性,动画将被取消(参见
cancel)。在 1.4.0 版本加入.
- property duration¶
返回动画的持续时间。
- static stop_all(widget, *largs)[源代码]¶
停止所有涉及特定控件/属性列表的动画。
示例:
anim = Animation(x=50) anim.start(widget) # and later Animation.stop_all(widget, 'x')
- property transition¶
返回动画的过渡效果。
- class kivy.animation.AnimationTransition[源代码]¶
基类:
object用于与Animation对象一起使用的动画函数集合。缓动函数从Clutter项目移植到Kivy,参见https://developer.gnome.org/clutter/stable/ClutterAlpha.html
每个动画函数中的`progress`参数取值范围为0-1。