动画

AnimationAnimationTransition 用于对 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)[源代码]

基类:EventDispatcher

创建一个可用于动画化Widget的动画定义。

参数:
durationd:浮点数,默认值为 1。

动画持续时间,以秒为单位。

transitiont:字符串或函数

用于动画属性的过渡函数。它可以是 AnimationTransition 中某个方法的名称。

steps:浮点数

动画的步进时间,单位为毫秒。默认值为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

返回用于动画的属性。

cancel(widget)[源代码]

取消之前应用于小部件的动画。效果与 stop 相同,但 on_complete 事件将*不会*被触发!

在 1.4.0 版本加入.

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

返回动画的持续时间。

have_properties_to_animate(widget)[源代码]

如果控件仍有属性需要动画,则返回True。

在 1.8.0 版本加入.

start(widget)[源代码]

在控件上启动动画。

stop(widget)[源代码]

停止之前应用于某个部件的动画,触发 on_complete 事件。

static stop_all(widget, *largs)[源代码]

停止所有涉及特定控件/属性列表的动画。

示例:

anim = Animation(x=50)
anim.start(widget)

# and later
Animation.stop_all(widget, 'x')
stop_property(widget, prop)[源代码]

即使动画正在运行,也会移除一个属性。该属性将不再被动画化。如果这是唯一/最后一个正在动画化的属性,动画将被停止(参见 stop)。

property transition

返回动画的过渡效果。

class kivy.animation.AnimationTransition[源代码]

基类:object

用于与Animation对象一起使用的动画函数集合。缓动函数从Clutter项目移植到Kivy,参见https://developer.gnome.org/clutter/stable/ClutterAlpha.html

每个动画函数中的`progress`参数取值范围为0-1。

static in_back(progress)[源代码]
_images/anim_in_back.png
static in_bounce(progress)[源代码]
_images/anim_in_bounce.png
static in_circ(progress)[源代码]
_images/anim_in_circ.png
static in_cubic(progress)[源代码]
_images/anim_in_cubic.png
static in_elastic(progress)[源代码]
_images/anim_in_elastic.png
static in_expo(progress)[源代码]
_images/anim_in_expo.png
static in_out_back(progress)[源代码]
_images/anim_in_out_back.png
static in_out_bounce(progress)[源代码]
_images/anim_in_out_bounce.png
static in_out_circ(progress)[源代码]
_images/anim_in_out_circ.png
static in_out_cubic(progress)[源代码]
_images/anim_in_out_cubic.png
static in_out_elastic(progress)[源代码]
_images/anim_in_out_elastic.png
static in_out_expo(progress)[源代码]
_images/anim_in_out_expo.png
static in_out_quad(progress)[源代码]
_images/anim_in_out_quad.png
static in_out_quart(progress)[源代码]
_images/anim_in_out_quart.png
static in_out_quint(progress)[源代码]
_images/anim_in_out_quint.png
static in_out_sine(progress)[源代码]
_images/anim_in_out_sine.png
static in_quad(progress)[源代码]
_images/anim_in_quad.png
static in_quart(progress)[源代码]
_images/anim_in_quart.png
static in_quint(progress)[源代码]
_images/anim_in_quint.png
static in_sine(progress)[源代码]
_images/anim_in_sine.png
static linear(progress)[源代码]
_images/anim_linear.png
static out_back(progress)[源代码]
_images/anim_out_back.png
static out_bounce(progress)[源代码]
_images/anim_out_bounce.png
static out_circ(progress)[源代码]
_images/anim_out_circ.png
static out_cubic(progress)[源代码]
_images/anim_out_cubic.png
static out_elastic(progress)[源代码]
_images/anim_out_elastic.png
static out_expo(progress)[源代码]
_images/anim_out_expo.png
static out_quad(progress)[源代码]
_images/anim_out_quad.png
static out_quart(progress)[源代码]
_images/anim_out_quart.png
static out_quint(progress)[源代码]
_images/anim_out_quint.png
static out_sine(progress)[源代码]
_images/anim_out_sine.png