Версия 2.1.0

Quick search

Animation

Animation и AnimationTransition используются для создания анимации свойств Widget. Вы должны указать как минимум имя свойства и целевое значение. Для использования анимации следуйте этим шагам:

  • Настройте объект анимации

  • Используйте объект анимации для виджета

Простая анимация

Чтобы выполнить анимацию позиции x или y виджета, просто укажите целевые значения x/y, где вы хотите разместить виджет в конце анимации:

anim = Animation(x=100, y=100)
anim.start(widget)

Анимация будет длиться 1 секунду, если не указано duration. Когда вызывается anim.start(), виджет будет плавно перемещаться из текущего положения x/y в (100, 100).

Анимация нескольких свойств и переходов

Вы можете анимировать несколько свойств и использовать встроенные или пользовательские функции перехода с помощью transition (или сокращенной записи t= shortcut). Например, чтобы выполнить анимацию позиции и размера с использованием перехода 'in_quad':

anim = Animation(x=50, size=(80, 80), t='in_quad')
anim.start(widget)

Обратите внимание, что параметр t= может быть строковым именем метода в классе AnimationTransition или вашей собственной функцией анимации.

Последовательная анимация

Для объединения анимаций последовательно используйте оператор ‘+’. В следующем примере выполнится анимация до x=50 за 1 секунду, затем анимация размера до (80, 80) в течение следующих двух секунд:

anim = Animation(x=50) + Animation(size=(80, 80), duration=2.)
anim.start(widget)

Параллельная анимация

Чтобы объединить анимации параллельно, используйте оператор ‘&’. В следующем примере позиция будет анимирована до (80, 10) за 1 секунду, параллельно с этим размер будет анимирован до (800, 800):

anim = Animation(pos=(80, 10))
anim &= Animation(size=(800, 800), duration=2.)
anim.start(widget)

Помните, что создание перекрывающихся анимаций для одного и того же свойства может привести к неожиданным результатам. Если вы хотите применить несколько анимаций к одному свойству, вы должны либо запланировать их последовательно (с помощью оператора ‘+’ или используя обратный вызов on_complete) или отменить предыдущие анимации с помощью метода cancel_all.

Повторяющаяся анимация

Добавлено в версии 1.8.0.

Примечание

В настоящее время это реализовано только для анимаций типа 'Sequence' (Последовательность).

Чтобы установить анимацию на повторение, просто установите свойство Sequence.repeat в значение True:

anim = Animation(...) + Animation(...)
anim.repeat = True
anim.start(widget)

Для управления потоком анимаций, таким как остановка и отмена, используйте уже имеющиеся методы в модуле анимаций.

class kivy.animation.Animation(**kw)[исходный код]

Базовый класс: kivy.event.EventDispatcher

Создает анимацию, которое можно использовать для анимации виджета.

Parameters
duration или d: float, по умолчанию 1.

Продолжительность анимации в секундах.

transition или t: str или функция

Функция перехода для анимации свойств. Может быть именем метода из AnimationTransition.

step или s: float

Шаг в миллисекундах анимации. По умолчанию 0, что означает, что анимация обновляется для каждого кадра.

Чтобы обновлять анимацию реже, установите значение шага в виде числа с плавающей точкой. Например, если вы хотите анимировать с частотой 30 кадров в секунду, используйте s=1/30.

Events
on_start: animation, widget

Срабатывает, когда начинается анимация на виджете.

on_complete: animation, widget

Срабатывает, когда анимация завершается или останавливается на виджете.

on_progress: animation, widget, progression

Срабатывает, когда изменяется ход анимации.

Изменено в версии 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)

# а затем
Animation.cancel_all(widget, 'x')

Добавлено в версии 1.4.0.

Изменено в версии 2.1.0: Если параметр widget равен None, то все анимированные виджеты будут целью и будут отменены. Если также указан параметр largs, анимация этих свойств будет отменена для всех анимированных виджетов.

cancel_property(widgetprop)[исходный код]

Даже если анимация выполняется, удаляет свойство. Оно не будет дальше анимироваться. Если это было единственное/последнее анимируемое свойство, то анимация будет отменена (см. 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)

# а затем
Animation.stop_all(widget, 'x')
stop_property(widgetprop)[исходный код]

Даже если анимация выполняется, удаляет свойство. Оно не будет дальше анимироваться. Если это было единственное/последнее анимируемое свойство, то анимация будет остановлена (см. stop).

property transition

Возвращает переход(transition) анимации.

class kivy.animation.AnimationTransition[исходный код]

Базовый класс: builtins.object

Набор функций анимации, используемых с объектом Animation. Функции плавности анимации перенесены в Kivy из проекта Clutter https://developer.gnome.org/clutter/stable/ClutterAlpha.html

Параметр progress в каждой функции анимации находится в диапазоне от 0 до 1.

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