Class Keyframe

java.lang.Object
icyllis.modernui.animation.Keyframe

public abstract class Keyframe extends Object
This class holds a time/value pair for an animation. The Keyframe class is used by ObjectAnimator to define the values that the animation target will have over the course of the animation. As the time proceeds from one keyframe to the other, the value of the target object will animate between the value at the previous keyframe and the value at the next keyframe. Each keyframe also holds an optional TimeInterpolator object, which defines the time interpolation over the inter-value preceding the keyframe.

The Keyframe class itself is abstract. The type-specific factory methods will return a subclass of Keyframe specific to the type of value being stored. This is done to improve performance when dealing with the most common cases (e.g., float and int values). Other types will fall into a more general Keyframe class that treats its values as Objects. Unless your animation requires dealing with a custom type or a data structure that needs to be animated directly (and evaluated using an implementation of TypeEvaluator), you should stick to using float and int as animations using those types have lower runtime overhead than other types.

  • Constructor Summary

    Constructors
    Constructor
    Description
     
  • Method Summary

    Modifier and Type
    Method
    Description
    abstract Keyframe
     
    float
    Gets the time for this keyframe, as a fraction of the overall animation duration.
    Gets the optional interpolator for this Keyframe.
    abstract Object
    Gets the value for this Keyframe.
    boolean
    Indicates whether this keyframe has a valid value.
    static Keyframe
    ofFloat(float fraction)
    Constructs a Keyframe object with the given time.
    static Keyframe
    ofFloat(float fraction, float value)
    Constructs a Keyframe object with the given time and value.
    static Keyframe
    ofInt(float fraction)
    Constructs a Keyframe object with the given time.
    static Keyframe
    ofInt(float fraction, int value)
    Constructs a Keyframe object with the given time and value.
    static Keyframe
    ofObject(float fraction)
    Constructs a Keyframe object with the given time.
    static Keyframe
    ofObject(float fraction, Object value)
    Constructs a Keyframe object with the given time and value.
    void
    setFraction(float fraction)
    Sets the time for this keyframe, as a fraction of the overall animation duration.
    void
    Sets the optional interpolator for this Keyframe.
    abstract void
    Sets the value for this Keyframe.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • Keyframe

      public Keyframe()
  • Method Details

    • ofInt

      @Nonnull public static Keyframe ofInt(float fraction, int value)
      Constructs a Keyframe object with the given time and value. The time defines the time, as a proportion of an overall animation's duration, at which the value will hold true for the animation. The value for the animation between keyframes will be calculated as an interpolation between the values at those keyframes.
      Parameters:
      fraction - The time, expressed as a value between 0 and 1, representing the fraction of time elapsed of the overall animation duration.
      value - The value that the object will animate to as the animation time approaches the time in this keyframe, and the value animated from as the time passes the time in this keyframe.
    • ofInt

      @Nonnull public static Keyframe ofInt(float fraction)
      Constructs a Keyframe object with the given time. The value at this time will be derived from the target object when the animation first starts (note that this implies that keyframes with no initial value must be used as part of an ObjectAnimator). The time defines the time, as a proportion of an overall animation's duration, at which the value will hold true for the animation. The value for the animation between keyframes will be calculated as an interpolation between the values at those keyframes.
      Parameters:
      fraction - The time, expressed as a value between 0 and 1, representing the fraction of time elapsed of the overall animation duration.
    • ofFloat

      @Nonnull public static Keyframe ofFloat(float fraction, float value)
      Constructs a Keyframe object with the given time and value. The time defines the time, as a proportion of an overall animation's duration, at which the value will hold true for the animation. The value for the animation between keyframes will be calculated as an interpolation between the values at those keyframes.
      Parameters:
      fraction - The time, expressed as a value between 0 and 1, representing the fraction of time elapsed of the overall animation duration.
      value - The value that the object will animate to as the animation time approaches the time in this keyframe, and the value animated from as the time passes the time in this keyframe.
    • ofFloat

      @Nonnull public static Keyframe ofFloat(float fraction)
      Constructs a Keyframe object with the given time. The value at this time will be derived from the target object when the animation first starts (note that this implies that keyframes with no initial value must be used as part of an ObjectAnimator). The time defines the time, as a proportion of an overall animation's duration, at which the value will hold true for the animation. The value for the animation between keyframes will be calculated as an interpolation between the values at those keyframes.
      Parameters:
      fraction - The time, expressed as a value between 0 and 1, representing the fraction of time elapsed of the overall animation duration.
    • ofObject

      @Nonnull public static Keyframe ofObject(float fraction, Object value)
      Constructs a Keyframe object with the given time and value. The time defines the time, as a proportion of an overall animation's duration, at which the value will hold true for the animation. The value for the animation between keyframes will be calculated as an interpolation between the values at those keyframes.
      Parameters:
      fraction - The time, expressed as a value between 0 and 1, representing the fraction of time elapsed of the overall animation duration.
      value - The value that the object will animate to as the animation time approaches the time in this keyframe, and the value animated from as the time passes the time in this keyframe.
    • ofObject

      @Nonnull public static Keyframe ofObject(float fraction)
      Constructs a Keyframe object with the given time. The value at this time will be derived from the target object when the animation first starts (note that this implies that keyframes with no initial value must be used as part of an ObjectAnimator). The time defines the time, as a proportion of an overall animation's duration, at which the value will hold true for the animation. The value for the animation between keyframes will be calculated as an interpolation between the values at those keyframes.
      Parameters:
      fraction - The time, expressed as a value between 0 and 1, representing the fraction of time elapsed of the overall animation duration.
    • hasValue

      public boolean hasValue()
      Indicates whether this keyframe has a valid value. This method is called internally when an ObjectAnimator first starts; keyframes without values are assigned values at that time by deriving the value for the property from the target object.
      Returns:
      boolean Whether this object has a value assigned.
    • getValue

      public abstract Object getValue()
      Gets the value for this Keyframe.
      Returns:
      The value for this Keyframe.
    • setValue

      public abstract void setValue(Object value)
      Sets the value for this Keyframe.
      Parameters:
      value - value for this Keyframe.
    • getFraction

      public float getFraction()
      Gets the time for this keyframe, as a fraction of the overall animation duration.
      Returns:
      The time associated with this keyframe, as a fraction of the overall animation duration. This should be a value between 0 and 1.
    • setFraction

      public void setFraction(float fraction)
      Sets the time for this keyframe, as a fraction of the overall animation duration.
      Parameters:
      fraction - time associated with this keyframe, as a fraction of the overall animation duration. This should be a value between 0 and 1.
    • getInterpolator

      @Nullable public TimeInterpolator getInterpolator()
      Gets the optional interpolator for this Keyframe. A value of null indicates that there is no interpolation, which is the same as linear interpolation.
      Returns:
      The optional interpolator for this Keyframe.
    • setInterpolator

      public void setInterpolator(@Nullable TimeInterpolator interpolator)
      Sets the optional interpolator for this Keyframe. A value of null indicates that there is no interpolation, which is the same as linear interpolation.
    • copy

      @Nonnull public abstract Keyframe copy()