Cloneablepublic abstract class Keyframe extends Object implements Cloneable
This class can be used to hold a time/value pair for an animation. The Keyframe class is used
by AnimatorValue 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.
| 构造器 | 说明 |
|---|---|
Keyframe() |
| 限定符和类型 | 方法 | 说明 |
|---|---|---|
abstract Keyframe |
clone() |
Creates and returns a copy of this object.
|
float |
getProgress() |
Gets the time for this keyframe, as a progress of the overall animation duration.
|
Class |
getType() |
Gets the type of the value of the keyframe.
|
abstract Object |
getValue() |
Gets the value for this Keyframe.
|
boolean |
hasValue() |
Indicates whether this keyframe has a valid value.
|
static Keyframe |
ofFloat(float progress) |
Constructs a Keyframe object with the given time.
|
static Keyframe |
ofFloat(float progress,
float value) |
Constructs a Keyframe object with the given time and value.
|
static Keyframe |
ofInt(float progress) |
Constructs a Keyframe object with the given time.
|
static Keyframe |
ofInt(float progress,
int value) |
Constructs a Keyframe object with the given time and value.
|
static Keyframe |
ofObject(float progress) |
Constructs a Keyframe object with the given time.
|
static Keyframe |
ofObject(float progress,
Object value) |
Constructs a Keyframe object with the given time and value.
|
void |
setProgress(float progress) |
Sets the time for this keyframe, as a progress of the overall animation duration.
|
abstract void |
setValue(Object value) |
Sets the value for this Keyframe.
|
public static Keyframe ofInt(float progress, int value)
progress - The time, expressed as a value between 0 and 1, representing the progress
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 the value animated from as the time passes the time in
this keyframe.public static Keyframe ofInt(float progress)
AnimatorProperty).
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.progress - The time, expressed as a value between 0 and 1, representing the progress
of time elapsed of the overall animation duration.public static Keyframe ofFloat(float progress, float value)
progress - The time, expressed as a value between 0 and 1, representing the progress
of time elapsed of the overall animation duration.value - The value the keyframe should reach when this progress is reachedpublic static Keyframe ofFloat(float progress)
AnimatorProperty).
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.progress - The time, expressed as a value between 0 and 1, representing the progress
of time elapsed of the overall animation duration.public static Keyframe ofObject(float progress, Object value)
progress - The time, expressed as a value between 0 and 1, representing the progress
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 the value animated from as the time passes the time in
this keyframe.public static Keyframe ofObject(float progress)
AnimatorProperty).
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.progress - The time, expressed as a value between 0 and 1.public boolean hasValue()
AnimatorProperty first starts; keyframes without values are assigned values at
that time by deriving the value for the property from the target object.public abstract Object getValue()
public abstract void setValue(Object value)
value - value for this Keyframe.public float getProgress()
public void setProgress(float progress)
progress - time associated with this keyframe, as a progress of the overall animation
duration. This should be a value between 0 and 1.public Class getType()
public abstract Keyframe clone()
Objectx, the expression:
will be true, and that the expression:x.clone() != x
will bex.clone().getClass() == x.getClass()
true, but these are not absolute requirements.
While it is typically the case that:
will bex.clone().equals(x)
true, this is not an absolute requirement.
By convention, the returned object should be obtained by calling
super.clone. If a class and all of its superclasses (except
Object) obey this convention, it will be the case that
x.clone().getClass() == x.getClass().
By convention, the object returned by this method should be independent
of this object (which is being cloned). To achieve this independence,
it may be necessary to modify one or more fields of the object returned
by super.clone before returning it. Typically, this means
copying any mutable objects that comprise the internal "deep structure"
of the object being cloned and replacing the references to these
objects with references to the copies. If a class contains only
primitive fields or references to immutable objects, then it is usually
the case that no fields in the object returned by super.clone
need to be modified.
The method clone for class Object performs a
specific cloning operation. First, if the class of this object does
not implement the interface Cloneable, then a
CloneNotSupportedException is thrown. Note that all arrays
are considered to implement the interface Cloneable and that
the return type of the clone method of an array type T[]
is T[] where T is any reference or primitive type.
Otherwise, this method creates a new instance of the class of this
object and initializes all its fields with exactly the contents of
the corresponding fields of this object, as if by assignment; the
contents of the fields are not themselves cloned. Thus, this method
performs a "shallow copy" of this object, not a "deep copy" operation.
The class Object does not itself implement the interface
Cloneable, so calling the clone method on an object
whose class is Object will result in throwing an
exception at run time.