Animation
Superclasses: Object
Subclasses: SpringAnimation
, TimedAnimation
A base class for animations.
AdwAnimation
represents an animation on a widget. It has a target that
provides a value to animate, and a state indicating whether the
animation hasn’t been started yet, is playing, paused or finished.
Currently there are two concrete animation types:
TimedAnimation
and SpringAnimation
.
AdwAnimation
will automatically skip the animation if
widget
is unmapped, or if
gtk_enable_animations
is FALSE
.
The done
signal can be used to perform an action after
the animation ends, for example hiding a widget after animating its
opacity
to 0.
AdwAnimation
will be kept alive while the animation is playing. As such,
it’s safe to create an animation, start it and immediately unref it:
A fire-and-forget animation:
static void
animation_cb (double value,
MyObject *self)
{
// Do something with ``value``
}
static void
my_object_animate (MyObject *self)
{
AdwAnimationTarget *target =
adw_callback_animation_target_new ((AdwAnimationTargetFunc) animation_cb,
self, NULL);
g_autoptr (AdwAnimation) animation =
adw_timed_animation_new (widget, 0, 1, 250, target);
adw_animation_play (animation);
}
If there’s a chance the previous animation for the same target hasn’t yet
finished, the previous animation should be stopped first, or the existing
AdwAnimation
object can be reused.
Methods
- class Animation
- get_follow_enable_animations_setting() bool
Gets whether
self
should be skipped when animations are globally disabled.Added in version 1.3.
- get_state() AnimationState
Gets the current value of
self
.The state indicates whether
self
is currently playing, paused, finished or hasn’t been started yet.
- get_target() AnimationTarget
Gets the target
self
animates.
- get_widget() Widget
Gets the widget
self
was created for.It provides the frame clock for the animation. It’s not strictly necessary for this widget to be same as the one being animated.
The widget must be mapped in order for the animation to work. If it’s not mapped, or if it gets unmapped during an ongoing animation, the animation will be automatically skipped.
- pause() None
Pauses a playing animation for
self
.Does nothing if the current state of
self
isn’tADW_ANIMATION_PLAYING
.Sets
state
toADW_ANIMATION_PAUSED
.
- play() None
Starts the animation for
self
.If the animation is playing, paused or has been completed, restarts it from the beginning. This allows to easily play an animation regardless of whether it’s already playing or not.
Sets
state
toADW_ANIMATION_PLAYING
.The animation will be automatically skipped if
widget
is unmapped, or ifgtk_enable_animations
isFALSE
.As such, it’s not guaranteed that the animation will actually run. For example, when using
idle_add
and starting an animation immediately afterwards, it’s entirely possible that the idle callback will run after the animation has already finished, and not while it’s playing.
- resume() None
Resumes a paused animation for
self
.This function must only be used if the animation has been paused with
pause
.Sets
state
toADW_ANIMATION_PLAYING
.
- set_follow_enable_animations_setting(setting: bool) None
Sets whether to skip
self
when animations are globally disabled.The default behavior is to skip the animation. Set to
FALSE
to disable this behavior.This can be useful for cases where animation is essential, like spinners, or in demo applications. Most other animations should keep it enabled.
Added in version 1.3.
- Parameters:
setting – whether to follow the global setting
- set_target(target: AnimationTarget) None
Sets the target
self
animates totarget
.- Parameters:
target – an animation target
Properties
- class Animation
- props.follow_enable_animations_setting: bool
Whether to skip the animation when animations are globally disabled.
The default behavior is to skip the animation. Set to
FALSE
to disable this behavior.This can be useful for cases where animation is essential, like spinners, or in demo applications. Most other animations should keep it enabled.
Added in version 1.3.
- props.state: AnimationState
The animation state.
The state indicates whether the animation is currently playing, paused, finished or hasn’t been started yet.
- props.target: AnimationTarget
The target to animate.
- props.widget: Widget
The animation widget.
It provides the frame clock for the animation. It’s not strictly necessary for this widget to be same as the one being animated.
The widget must be mapped in order for the animation to work. If it’s not mapped, or if it gets unmapped during an ongoing animation, the animation will be automatically skipped.
Signals
Fields
- class Animation
- parent_instance