public class AnimationSet
extends Animation
java.lang.Object | ||
↳ | android.view.animation.Animation | |
↳ | android.view.animation.AnimationSet |
代表应该一起播放的一组动画。 每个单独的动画的转换组成一个单一的转换。 如果AnimationSet设置其子项也设置的任何属性(例如duration或fillBefore),则AnimationSet的值会覆盖子值。
AnimationSet从动画中继承行为的方式非常重要。 一些应用于AnimationSet的Animation属性会影响AnimationSet本身,其中一些会被推送到子节点,另一些则会被忽略,如下所示:
ICE_CREAM_SANDWICH
, the behavior of these properties is the same in XML resources and at runtime (prior to that release, the values set in XML were ignored for AnimationSet). That is, calling
setDuration(500)
on an AnimationSet has the same effect as declaring
android:duration="500"
in an XML resource for an AnimationSet object.
Inherited XML attributes |
|
---|---|
From class android.view.animation.Animation
|
Inherited constants |
---|
From class android.view.animation.Animation
|
Public constructors |
|
---|---|
AnimationSet(Context context, AttributeSet attrs) 从资源加载AnimationSet时使用的构造函数。 |
|
AnimationSet(boolean shareInterpolator) 从代码构建AnimationSet时使用的构造函数 |
Public methods |
|
---|---|
void |
addAnimation(Animation a) 为此动画集添加一个子动画。 |
long |
computeDurationHint() 动画集的持续时间提示是其所有组件动画持续时间提示的最大值。 |
List<Animation> |
getAnimations() |
long |
getDuration() AnimationSet的持续时间被定义为最长的子动画的持续时间。 |
long |
getStartTime() 当这个动画应该开始。 |
boolean |
getTransformation(long currentTime, Transformation t) 动画集的转换是所有组件动画的连接。 |
void |
initialize(int width, int height, int parentWidth, int parentHeight) 使用被动画对象的维度以及对象父项来初始化此动画。 |
void |
reset() 重置此动画的初始化状态。 |
void |
restrictDuration(long durationMillis) 确保此动画运行的 持续时间不超过 durationMillis 。 |
void |
scaleCurrentDuration(float scale) 多少时间通过缩放。 |
void |
setDuration(long durationMillis) 设置每个儿童动画的持续时间。 |
void |
setFillAfter(boolean fillAfter) 如果fillAfter为true,则此动画执行的转换在完成时将保持不变。 |
void |
setFillBefore(boolean fillBefore) 如果fillBefore为true,则此动画将在动画的开始时间之前应用其转换。 |
void |
setRepeatMode(int repeatMode) 定义此动画在到达结尾时应该执行的操作。 |
void |
setStartOffset(long startOffset) 当这个动画应该开始相对于开始时间。 |
void |
setStartTime(long startTimeMillis) 设置此动画的开始时间和所有儿童动画 |
boolean |
willChangeBounds() 指示此动画是否会影响动画视图的边界。 |
boolean |
willChangeTransformationMatrix() 指示此动画是否会影响转换矩阵。 |
Protected methods |
|
---|---|
AnimationSet |
clone() 创建并返回此对象的副本。 |
Inherited methods |
|
---|---|
From class android.view.animation.Animation
|
|
From class java.lang.Object
|
AnimationSet (Context context, AttributeSet attrs)
从资源加载AnimationSet时使用的构造函数。
Parameters | |
---|---|
context |
Context : Application context to use |
attrs |
AttributeSet : Attribute set from which to read values |
AnimationSet (boolean shareInterpolator)
从代码构建AnimationSet时使用的构造函数
Parameters | |
---|---|
shareInterpolator |
boolean : Pass true if all of the animations in this set should use the interpolator associated with this AnimationSet. Pass false if each animation should use its own interpolator. |
void addAnimation (Animation a)
为此动画集添加一个子动画。 儿童动画的变换按照添加的顺序进行应用
Parameters | |
---|---|
a |
Animation : Animation to add. |
long computeDurationHint ()
动画集的持续时间提示是其所有组件动画持续时间提示的最大值。
Returns | |
---|---|
long |
也可以看看:
List<Animation> getAnimations ()
Returns | |
---|---|
List<Animation> |
All the child animations in this AnimationSet. Note that this may include other AnimationSets, which are not expanded. |
long getDuration ()
AnimationSet的持续时间被定义为最长的子动画的持续时间。
Returns | |
---|---|
long |
the duration in milliseconds of the animation |
也可以看看:
long getStartTime ()
当这个动画应该开始。 如果动画尚未启动,则此方法可能会返回START_ON_FIRST_FRAME
。
Returns | |
---|---|
long |
the time in milliseconds when the animation should start or START_ON_FIRST_FRAME |
boolean getTransformation (long currentTime, Transformation t)
动画集的转换是所有组件动画的连接。
Parameters | |
---|---|
currentTime |
long : Where we are in the animation. This is wall clock time. |
t |
Transformation : A transformation object that is provided by the caller and will be filled in by the animation. |
Returns | |
---|---|
boolean |
True if the animation is still running |
void initialize (int width, int height, int parentWidth, int parentHeight)
使用被动画对象的维度以及对象父项来初始化此动画。 (这是为了支持相对于这些尺寸指定的动画尺寸。)
当动画的对象的大小及其父对象已知且在调用 getTransformation(long, Transformation)
之前,解释动画的对象应该调用此方法。
Parameters | |
---|---|
width |
int : Width of the object being animated |
height |
int : Height of the object being animated |
parentWidth |
int : Width of the animated object's parent |
parentHeight |
int : Height of the animated object's parent |
void restrictDuration (long durationMillis)
确保此动画运行的持续时间不超过durationMillis 。 除了调整持续时间本身外,这可确保重复计数也不会使其运行时间超过给定时间。
Parameters | |
---|---|
durationMillis |
long : The maximum duration the animation is allowed to run. |
void scaleCurrentDuration (float scale)
多少时间通过缩放。
Parameters | |
---|---|
scale |
float : The amount to scale the duration. |
也可以看看:
void setDuration (long durationMillis)
设置每个儿童动画的持续时间。
Parameters | |
---|---|
durationMillis |
long : the duration of the animation, in milliseconds, for every child in this set |
void setFillAfter (boolean fillAfter)
如果fillAfter为true,则此动画执行的转换在完成时将保持不变。 如果未设置,则默认为false。 请注意,这适用于单个动画以及使用AnimationSet
来链接动画。
Parameters | |
---|---|
fillAfter |
boolean : true if the animation should apply its transformation after it ends |
void setFillBefore (boolean fillBefore)
如果fillBefore为true,则此动画将在动画的开始时间之前应用其转换。 如果setFillEnabled(boolean)
未设置为true,则默认为true。 请注意,这适用于使用AnimationSet
来链接动画。 在AnimationSet自身启动之前不会应用转换。
Parameters | |
---|---|
fillBefore |
boolean : true if the animation should apply its transformation before it starts |
void setRepeatMode (int repeatMode)
定义此动画在到达结尾时应该执行的操作。 仅当重复计数大于0或INFINITE
时才应用此设置。 默认为RESTART
。
Parameters | |
---|---|
repeatMode |
int : RESTART or REVERSE |
void setStartOffset (long startOffset)
当这个动画应该开始相对于开始时间。 当使用AnimationSet
组合复杂动画时,这是非常有用的,其中一些动画组件在不同的时间开始。
Parameters | |
---|---|
startOffset |
long : When this Animation should start, in milliseconds from the start time of the root AnimationSet. |
void setStartTime (long startTimeMillis)
设置此动画的开始时间和所有儿童动画
Parameters | |
---|---|
startTimeMillis |
long : the start time in milliseconds |
也可以看看:
boolean willChangeBounds ()
指示此动画是否会影响动画视图的边界。 例如,淡入淡出的动画不会影响界限,而200%的动画将会影响界限。
Returns | |
---|---|
boolean |
true if this animation will change the view's bounds |
boolean willChangeTransformationMatrix ()
指示此动画是否会影响转换矩阵。 例如,淡入淡出的动画不会影响矩阵,而标度动画会影响矩阵。
Returns | |
---|---|
boolean |
true if this animation will change the transformation matrix |
AnimationSet clone ()
创建并返回此对象的副本。 “复制”的确切含义可能取决于对象的类别。 一般意图是,对于任何对象x
,表达式:
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.
按照惯例,返回的对象应该通过调用super.clone
获得。 如果一个类和它的所有超类( Object
除外)都遵守这个约定,那将是这样的情况x.clone().getClass() == x.getClass()
。
按照惯例,这个方法返回的对象应该独立于这个对象(被克隆)。 为了实现这种独立性,可能需要在返回super.clone
之前修改对象的一个或多个字段。 通常,这意味着复制包含被克隆对象的内部“深层结构”的任何可变对象,并将这些对象的引用替换为对这些副本的引用。 如果一个类只包含原始字段或对不可变对象的引用,那么通常情况下不需要修改super.clone
返回的对象中的字段。
类Object
的方法clone
执行特定的克隆操作。 首先,如果该对象的类没有实现接口Cloneable
,则引发CloneNotSupportedException
。 请注意,所有数组都被视为实现接口Cloneable
并且数组类型T[]
的clone
方法的返回类型为T[]
,其中T是任何引用或基本类型。 否则,此方法创建该对象的类的新实例,并使用该对象的相应字段的内容来初始化其所有字段,就像通过赋值一样; 这些字段的内容本身并不克隆。 因此,此方法执行此对象的“浅拷贝”,而不是“深拷贝”操作。
类 Object
本身不实现接口 Cloneable
,所以在类 Object
的对象上调用 clone
方法将导致在运行时抛出异常。
Returns | |
---|---|
AnimationSet |
a clone of this instance. |
Throws | |
---|---|
CloneNotSupportedException |