Class Animation

All Implemented Interfaces:
Proxy
Direct Known Subclasses:
Animation.Animation$Impl, SpringAnimation, TimedAnimation

@Generated("org.javagi.JavaGI") public abstract class Animation extends GObject

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 Animation:widget is unmapped, or if Gtk.Settings:gtk-enable-animations is FALSE.

The Animation::done signal can be used to perform an action after the animation ends, for example hiding a widget after animating its Gtk.Widget: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.

  • Constructor Details

    • Animation

      public Animation(MemorySegment address)
      Create a Animation instance for the provided memory address.
      Parameters:
      address - the memory address of the native object
    • Animation

      public Animation()
      Create a new Animation.
  • Method Details

    • getType

      public static @Nullable Type getType()
      Get the GType of the Animation class.
      Returns:
      the GType
    • getMemoryLayout

      public static MemoryLayout getMemoryLayout()
      The memory layout of the native struct.
      Returns:
      the memory layout
    • asParent

      protected Animation asParent()
      Return this instance as if it were its parent type. Comparable to the Java super keyword, but ensures the parent typeclass is also used in native code.
      Overrides:
      asParent in class GObject
      Returns:
      the instance as if it were its parent type
    • getFollowEnableAnimationsSetting

      public boolean getFollowEnableAnimationsSetting()
      Gets whether this Animation should be skipped when animations are globally disabled.
      Returns:
      whether to follow the global setting
      Since:
      1.3
    • getState

      public AnimationState getState()

      Gets the current value of self.

      The state indicates whether this Animation is currently playing, paused, finished or hasn't been started yet.

      Returns:
      the animation value
    • getTarget

      public AnimationTarget getTarget()
      Gets the target this Animation animates.
      Returns:
      the animation target
    • getValue

      public double getValue()
      Gets the current value of self.
      Returns:
      the current value
    • getWidget

      public Widget getWidget()

      Gets the widget this Animation 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.

      Returns:
      the animation widget
    • pause

      public void pause()

      Pauses a playing animation for self.

      Does nothing if the current state of this Animation isn't Adw.AnimationState.playing.

      Sets Animation:state to Adw.AnimationState.paused.

    • play

      public void play()

      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 Animation:state to Adw.AnimationState.playing.

      The animation will be automatically skipped if Animation:widget is unmapped, or if Gtk.Settings:gtk-enable-animations is FALSE.

      As such, it's not guaranteed that the animation will actually run. For example, when using GLib#idleAdd 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.

    • reset

      public void reset()

      Resets the animation for self.

      Sets Animation:state to Adw.AnimationState.idle.

    • resume

      public void resume()

      Resumes a paused animation for self.

      This function must only be used if the animation has been paused with pause().

      Sets Animation:state to Adw.AnimationState.playing.

    • setFollowEnableAnimationsSetting

      public void setFollowEnableAnimationsSetting(boolean setting)

      Sets whether to skip this 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.

      See Gtk.Settings:gtk-enable-animations.

      Parameters:
      setting - whether to follow the global setting
      Since:
      1.3
    • setTarget

      public void setTarget(AnimationTarget target)
      Sets the target this Animation animates to target.
      Parameters:
      target - an animation target
    • skip

      public void skip()

      Skips the animation for self.

      If the animation hasn't been started yet, is playing, or is paused, instantly skips the animation to the end and causes Animation::done to be emitted.

      Sets Animation:state to Adw.AnimationState.finished.

    • onDone

      This signal is emitted when the animation has been completed, either on its own or via calling skip().
      Parameters:
      handler - the signal handler
      Returns:
      a signal handler ID to keep track of the signal connection
      See Also:
    • emitDone

      public void emitDone()
      Emits the "done" signal. See onDone(Animation.DoneCallback).