public final class AnimatorSet
extends Animator
java.lang.Object | ||
↳ | android.animation.Animator | |
↳ | android.animation.AnimatorSet |
这个类以指定的顺序播放一组Animator
对象。 动画可以设置为一起播放,按顺序播放或在指定的延迟之后播放。
有两种不同的方法可以将动画添加到 AnimatorSet
:可以 playTogether()
或 playSequentially()
方法来一次添加一组动画,或者 play(Animator)
可以与 Builder
类中的方法一起使用,以便将动画添加到一个一。
可以在其动画之间设置具有循环依赖关系的AnimatorSet
。 例如,动画a1可以设置为在动画a2之前开始,a3之前a2之前以及a1之前a3之前开始。 此配置的结果未定义,但通常不会导致正在播放的受影响的动画。 由于这个原因(并且因为循环依赖关系无论如何都不具有逻辑意义),应该避免循环依赖关系,并且动画的依赖关系流应该只在一个方向上。
有关使用 AnimatorSet
动画 AnimatorSet
更多信息,请阅读 Property Animation开发人员指南。
Nested classes |
|
---|---|
class |
AnimatorSet.Builder |
Inherited constants |
---|
From class android.animation.Animator
|
Public constructors |
|
---|---|
AnimatorSet() |
Public methods |
|
---|---|
void |
cancel() 取消动画。 请注意,取消 |
AnimatorSet |
clone() 创建并返回此对象的副本。 |
void |
end() 结束动画。 请注意,结束 |
ArrayList<Animator> |
getChildAnimations() 返回由此AnimatorSet控制的子Animator对象的当前列表。 |
long |
getDuration() 获取此AnimatorSet的每个子动画的长度。 |
TimeInterpolator |
getInterpolator() 返回此动画使用的定时插补器。 |
long |
getStartDelay() 调用 |
long |
getTotalDuration() 获取动画的总持续时间,计算动画序列,启动延迟和重复。 |
boolean |
isRunning() 如果此AnimatorSet的任何子动画已启动且尚未结束,则返回true。 |
boolean |
isStarted() 返回此Animator是否已启动且尚未结束。 |
void |
pause() 暂停正在运行的动画。 |
AnimatorSet.Builder |
play(Animator anim) 此方法创建一个 |
void |
playSequentially(List<Animator> items) 设置此AnimatorSet以在上一个动画结束时播放每个提供的动画。 |
void |
playSequentially(Animator... items) 设置此AnimatorSet以在上一个动画结束时播放每个提供的动画。 |
void |
playTogether(Collection<Animator> items) 设置此AnimatorSet可同时播放所有提供的动画。 |
void |
playTogether(Animator... items) 设置此AnimatorSet可同时播放所有提供的动画。 |
void |
resume() 恢复暂停的动画,导致动画制作者在暂停时停止播放。 |
AnimatorSet |
setDuration(long duration) 设置此AnimatorSet的每个当前子动画的长度。 |
void |
setInterpolator(TimeInterpolator interpolator) 为此AnimatorSet的当前所有 |
void |
setStartDelay(long startDelay) 调用 |
void |
setTarget(Object target) 为目标( |
void |
setupEndValues() 此方法告诉对象使用适当的信息来提取动画的结尾值。 |
void |
setupStartValues() 该方法告诉对象使用适当的信息来提取动画的起始值。 |
void |
start() 开始这个动画。 反过来,开始这个 |
String |
toString() 返回对象的字符串表示形式。 |
Inherited methods |
|
---|---|
From class android.animation.Animator
|
|
From class java.lang.Object
|
void cancel ()
取消动画。 与end()
不同, cancel()
导致动画在其轨道上停止,向其听众发送onAnimationCancel(Animator)
,然后发送onAnimationEnd(Animator)
消息。
必须在运行动画的线程上调用此方法。
请注意,取消 AnimatorSet
也会取消所有负责的动画。
AnimatorSet 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 | |
---|---|
AnimatorSet |
a clone of this instance. |
void end ()
结束动画。 这会导致动画指定被动画属性的最终值,然后在其侦听器上调用onAnimationEnd(Animator)
方法。
必须在运行动画的线程上调用此方法。
请注意,结束 AnimatorSet
也会结束它所负责的所有动画。
ArrayList<Animator> getChildAnimations ()
返回由此AnimatorSet控制的子Animator对象的当前列表。 这是内部列表的副本; 尽管对底层Animator对象的更改会影响由AnimatorSet管理的对象,但对返回列表的修改不会影响AnimatorSet。
Returns | |
---|---|
ArrayList<Animator> |
ArrayList
|
long getDuration ()
获取此AnimatorSet的每个子动画的长度。 该值可能小于0,这表示此AnimatorSet上没有设置持续时间,每个子动画将使用它们自己的持续时间。
Returns | |
---|---|
long |
The length of the animation, in milliseconds, of each of the child animations of this AnimatorSet. |
TimeInterpolator getInterpolator ()
返回此动画使用的定时插补器。
Returns | |
---|---|
TimeInterpolator |
The timing interpolator for this animation. |
long getStartDelay ()
调用 start()
后延迟启动动画的时间量(以毫秒为单位)。
Returns | |
---|---|
long |
the number of milliseconds to delay running the animation |
long getTotalDuration ()
获取动画的总持续时间,计算动画序列,启动延迟和重复。 如果持续时间是无限的,则返回DURATION_INFINITE
。
Returns | |
---|---|
long |
Total time an animation takes to finish, starting from the time start() is called. DURATION_INFINITE will be returned if the animation or any child animation repeats infinite times. |
boolean isRunning ()
如果此AnimatorSet的任何子动画已启动且尚未结束,则返回true。 直到AnimatorSet超过其通过setStartDelay(long)
设置的初始延迟时间之后,才会启动子动画。
Returns | |
---|---|
boolean |
Whether this AnimatorSet has gone past the initial delay, and at least one child animation has been started and not yet ended. |
boolean isStarted ()
返回此Animator是否已启动且尚未结束。 对于可重复使用的动画师(大多数动画师除了由createCircularReveal()
生成的一次动画师createCircularReveal()
),此状态是isRunning()
的超集,因为具有非零值startDelay
的动画师将在延迟阶段返回isStarted()
真isStarted()
,而isRunning()
将返回只有在延迟阶段完成后才为真。 不可重用的动画制作者在启动后将始终返回true,因为它们无法返回到未启动状态。
Returns | |
---|---|
boolean |
Whether the Animator has been started and not yet ended. |
void pause ()
暂停正在运行的动画。 该方法只应在与动画相同的线程上调用。 如果动画尚未started
或已经结束,则该呼叫将被忽略。 通过调用resume()
可以恢复暂停的动画。
AnimatorSet.Builder play (Animator anim)
此方法创建一个Builder
对象,该对象用于设置播放约束。 这个初始的play()
方法告诉Builder
动画是对Builder
的后续命令的依赖关系。 例如,调用play(a1).with(a2)
树立AnimatorSet发挥a1
和a2
的同时, play(a1).before(a2)
树立AnimatorSet打a1
首位,其次为a2
和play(a1).after(a2)
树立AnimatorSet打a2
第一,其次是a1
。
请注意, play()
是告诉Builder
创建依赖关系的动画的唯一方式,因此对Builder
各个函数的连续调用Builder
将引用play()
提供的初始参数作为其他动画的依赖关系。 例如,当a1结束时,调用play(a1).before(a2).before(a3)
将同时播放a2
和a3
; 它不建立a2
和a3
之间的依赖关系。
Parameters | |
---|---|
anim |
Animator : The animation that is the dependency used in later calls to the methods in the returned Builder object. A null parameter will result in a null Builder return value. |
Returns | |
---|---|
AnimatorSet.Builder |
Builder The object that constructs the AnimatorSet based on the dependencies outlined in the calls to play and the other methods in the Builder |
void playSequentially (List<Animator> items)
设置此AnimatorSet以在上一个动画结束时播放每个提供的动画。
Parameters | |
---|---|
items |
List : The animations that will be started one after another. |
void playSequentially (Animator... items)
设置此AnimatorSet以在上一个动画结束时播放每个提供的动画。
Parameters | |
---|---|
items |
Animator : The animations that will be started one after another. |
void playTogether (Collection<Animator> items)
设置此AnimatorSet可同时播放所有提供的动画。
Parameters | |
---|---|
items |
Collection : The animations that will be started simultaneously. |
void playTogether (Animator... items)
设置此AnimatorSet可同时播放所有提供的动画。 这等同于调用play(Animator)
与该组中的第一动画,然后with(Animator)
与其他每个动画师。 请注意,一个带有startDelay
的Animator在延迟过去之后才会真正开始,这意味着如果提供给此构造函数的列表中的第一个动画人员具有startDelay,则在第一个动画制作人员的startDelay过去之前,其他动画人员都不会启动。
Parameters | |
---|---|
items |
Animator : The animations that will be started simultaneously. |
void resume ()
恢复暂停的动画,导致动画制作者在暂停时停止播放。 该方法只应在与动画相同的线程上调用。 对当前未暂停的动画制作者调用resume()将被忽略。
AnimatorSet setDuration (long duration)
设置此AnimatorSet的每个当前子动画的长度。 默认情况下,每个子动画将使用自己的持续时间。 如果在AnimatorSet上设置持续时间,则每个子动画都会继承此持续时间。
Parameters | |
---|---|
duration |
long : The length of the animation, in milliseconds, of each of the child animations of this AnimatorSet. |
Returns | |
---|---|
AnimatorSet |
void setInterpolator (TimeInterpolator interpolator)
为此AnimatorSet的当前所有child animations
设置TimeInterpolator。 默认值为null,这意味着在此AnimatorSet上不设置插补器。 将插值器设置为任何非空值将导致该集插入器在子集动画启动时设置。
Parameters | |
---|---|
interpolator |
TimeInterpolator : the interpolator to be used by each child animation of this AnimatorSet |
void setStartDelay (long startDelay)
调用start()
后延迟启动动画的时间量(以毫秒为单位)。 请注意,启动延迟应始终为非负值。 在N及以上时,任何负启动延迟将被钳位到0。
Parameters | |
---|---|
startDelay |
long : The amount of the delay, in milliseconds |
void setTarget (Object target)
为目标( ObjectAnimator
和AnimatorSet)设置此AnimatorSet的所有当前 child animations
的目标对象。
Parameters | |
---|---|
target |
Object : The object being animated |
void setupEndValues ()
此方法告诉对象使用适当的信息来提取动画的结尾值。 例如,一个AnimatorSet对象会将这个调用传递给它的子对象,告诉它们设置这些值。 ObjectAnimator对象将使用它所拥有的关于其目标对象和PropertyValuesHolder对象的信息来获取其属性的起始值。 ValueAnimator对象将忽略该请求,因为它没有足够的信息(如目标对象)来收集这些值。
void setupStartValues ()
该方法告诉对象使用适当的信息来提取动画的起始值。 例如,一个AnimatorSet对象会将这个调用传递给它的子对象,告诉它们设置这些值。 ObjectAnimator对象将使用它所拥有的关于其目标对象和PropertyValuesHolder对象的信息来获取其属性的起始值。 ValueAnimator对象将忽略该请求,因为它没有足够的信息(如目标对象)来收集这些值。
void start ()
开始这个动画。 如果动画具有非零的startDelay,则动画将在延迟消逝后开始运行。 非延迟动画将立即设置其初始值,然后调用此动画师的任何听众的onAnimationStart(Animator)
。
通过调用此方法开始的动画将在调用此方法的线程上运行。 这个线程应该有一个Looper(如果不是这种情况,将会抛出一个运行时异常)。 此外,如果动画会为视图层次结构中的对象的属性制作动画,则调用线程应该是该视图层次结构的UI线程。
开始这个AnimatorSet
将反过来开始它负责的动画。 动画何时开始的细节取决于动画之间已建立的依赖关系。
String toString ()
返回对象的字符串表示形式。 一般来说, toString
方法返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |