Most visited

Recently visited

Added in API level 11

AnimatorSet

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之前开始。 此配置的结果未定义,但通常不会导致正在播放的受影响的动画。 由于这个原因(并且因为循环依赖关系无论如何都不具有逻辑意义),应该避免循环依赖关系,并且动画的依赖关系流应该只在一个方向上。

Developer Guides

有关使用 AnimatorSet动画 AnimatorSet更多信息,请阅读 Property Animation开发人员指南。

Summary

Nested classes

class AnimatorSet.Builder

Builder对象是一个实用工具类,以便于将动画与各种动画之间的关系一起添加到AnimatorSet

Inherited constants

From class android.animation.Animator

Public constructors

AnimatorSet()

Public methods

void cancel()

取消动画。

请注意,取消 AnimatorSet也会取消它所负责的所有动画。

AnimatorSet clone()

创建并返回此对象的副本。

void end()

结束动画。

请注意,结束 AnimatorSet也会结束它所负责的所有动画。

ArrayList<Animator> getChildAnimations()

返回由此AnimatorSet控制的子Animator对象的当前列表。

long getDuration()

获取此AnimatorSet的每个子动画的长度。

TimeInterpolator getInterpolator()

返回此动画使用的定时插补器。

long getStartDelay()

调用 start()后延迟启动动画的时间量(以毫秒为单位)。

long getTotalDuration()

获取动画的总持续时间,计算动画序列,启动延迟和重复。

boolean isRunning()

如果此AnimatorSet的任何子动画已启动且尚未结束,则返回true。

boolean isStarted()

返回此Animator是否已启动且尚未结束。

void pause()

暂停正在运行的动画。

AnimatorSet.Builder play(Animator anim)

此方法创建一个 Builder对象,该对象用于设置播放约束。

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的当前所有 child animations设置TimeInterpolator。

void setStartDelay(long startDelay)

调用 start()后延迟启动动画的时间量(以毫秒为单位)。

void setTarget(Object target)

为目标( ObjectAnimator和AnimatorSet)设置此AnimatorSet的所有当前 child animations的目标对象。

void setupEndValues()

此方法告诉对象使用适当的信息来提取动画的结尾值。

void setupStartValues()

该方法告诉对象使用适当的信息来提取动画的起始值。

void start()

开始这个动画。

反过来,开始这个 AnimatorSet将开始它负责的动画。

String toString()

返回对象的字符串表示形式。

Inherited methods

From class android.animation.Animator
From class java.lang.Object

Public constructors

AnimatorSet

Added in API level 11
AnimatorSet ()

Public methods

cancel

Added in API level 11
void cancel ()

取消动画。 end()不同, cancel()导致动画在其轨道上停止,向其听众发送onAnimationCancel(Animator) ,然后发送onAnimationEnd(Animator)消息。

必须在运行动画的线程上调用此方法。

请注意,取消 AnimatorSet也会取消所有负责的动画。

clone

Added in API level 11
AnimatorSet clone ()

创建并返回此对象的副本。 “复制”的确切含义可能取决于对象的类别。 一般意图是,对于任何对象x ,表达式:

 x.clone() != x
will be true, and that the expression:
 x.clone().getClass() == x.getClass()
will be true, but these are not absolute requirements. While it is typically the case that:
 x.clone().equals(x)
will be 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.

end

Added in API level 11
void end ()

结束动画。 这会导致动画指定被动画属性的最终值,然后在其侦听器上调用onAnimationEnd(Animator)方法。

必须在运行动画的线程上调用此方法。

请注意,结束 AnimatorSet也会结束它所负责的所有动画。

getChildAnimations

Added in API level 11
ArrayList<Animator> getChildAnimations ()

返回由此AnimatorSet控制的子Animator对象的当前列表。 这是内部列表的副本; 尽管对底层Animator对象的更改会影响由AnimatorSet管理的对象,但对返回列表的修改不会影响AnimatorSet。

Returns
ArrayList<Animator> ArrayList The list of child animations of this AnimatorSet.

getDuration

Added in API level 11
long getDuration ()

获取此AnimatorSet的每个子动画的长度。 该值可能小于0,这表示此AnimatorSet上没有设置持续时间,每个子动画将使用它们自己的持续时间。

Returns
long The length of the animation, in milliseconds, of each of the child animations of this AnimatorSet.

getInterpolator

Added in API level 18
TimeInterpolator getInterpolator ()

返回此动画使用的定时插补器。

Returns
TimeInterpolator The timing interpolator for this animation.

getStartDelay

Added in API level 11
long getStartDelay ()

调用 start()后延迟启动动画的时间量(以毫秒为单位)。

Returns
long the number of milliseconds to delay running the animation

getTotalDuration

Added in API level 24
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.

isRunning

Added in API level 11
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.

isStarted

Added in API level 14
boolean isStarted ()

返回此Animator是否已启动且尚未结束。 对于可重复使用的动画师(大多数动画师除了由createCircularReveal()生成的一次动画师createCircularReveal() ),此状态是isRunning()的超集,因为具有非零值startDelay的动画师将在延迟阶段返回isStarted()isStarted() ,而isRunning()将返回只有在延迟阶段完成后才为真。 不可重用的动画制作者在启动后将始终返回true,因为它们无法返回到未启动状态。

Returns
boolean Whether the Animator has been started and not yet ended.

pause

Added in API level 19
void pause ()

暂停正在运行的动画。 该方法只应在与动画相同的线程上调用。 如果动画尚未started或已经结束,则该呼叫将被忽略。 通过调用resume()可以恢复暂停的动画。

play

Added in API level 11
AnimatorSet.Builder play (Animator anim)

此方法创建一个Builder对象,该对象用于设置播放约束。 这个初始的play()方法告诉Builder动画是对Builder的后续命令的依赖关系。 例如,调用play(a1).with(a2)树立AnimatorSet发挥a1a2的同时, play(a1).before(a2)树立AnimatorSet打a1首位,其次为a2play(a1).after(a2)树立AnimatorSet打a2第一,其次是a1

请注意, play()是告诉Builder创建依赖关系的动画的唯一方式,因此对Builder各个函数的连续调用Builder将引用play()提供的初始参数作为其他动画的依赖关系。 例如,当a1结束时,调用play(a1).before(a2).before(a3)将同时播放a2a3 ; 它不建立a2a3之间的依赖关系。

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

playSequentially

Added in API level 11
void playSequentially (List<Animator> items)

设置此AnimatorSet以在上一个动画结束时播放每个提供的动画。

Parameters
items List: The animations that will be started one after another.

playSequentially

Added in API level 11
void playSequentially (Animator... items)

设置此AnimatorSet以在上一个动画结束时播放每个提供的动画。

Parameters
items Animator: The animations that will be started one after another.

playTogether

Added in API level 11
void playTogether (Collection<Animator> items)

设置此AnimatorSet可同时播放所有提供的动画。

Parameters
items Collection: The animations that will be started simultaneously.

playTogether

Added in API level 11
void playTogether (Animator... items)

设置此AnimatorSet可同时播放所有提供的动画。 这等同于调用play(Animator)与该组中的第一动画,然后with(Animator)与其他每个动画师。 请注意,一个带有startDelay的Animator在延迟过去之后才会真正开始,这意味着如果提供给此构造函数的列表中的第一个动画人员具有startDelay,则在第一个动画制作人员的startDelay过去之前,其他动画人员都不会启动。

Parameters
items Animator: The animations that will be started simultaneously.

resume

Added in API level 19
void resume ()

恢复暂停的动画,导致动画制作者在暂停时停止播放。 该方法只应在与动画相同的线程上调用。 对当前未暂停的动画制作者调用resume()将被忽略。

setDuration

Added in API level 11
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

setInterpolator

Added in API level 11
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

setStartDelay

Added in API level 11
void setStartDelay (long startDelay)

调用start()后延迟启动动画的时间量(以毫秒为单位)。 请注意,启动延迟应始终为非负值。 在N及以上时,任何负启动延迟将被钳位到0。

Parameters
startDelay long: The amount of the delay, in milliseconds

setTarget

Added in API level 11
void setTarget (Object target)

为目标( ObjectAnimator和AnimatorSet)设置此AnimatorSet的所有当前 child animations的目标对象。

Parameters
target Object: The object being animated

setupEndValues

Added in API level 11
void setupEndValues ()

此方法告诉对象使用适当的信息来提取动画的结尾值。 例如,一个AnimatorSet对象会将这个调用传递给它的子对象,告诉它们设置这些值。 ObjectAnimator对象将使用它所拥有的关于其目标对象和PropertyValuesHolder对象的信息来获取其属性的起始值。 ValueAnimator对象将忽略该请求,因为它没有足够的信息(如目标对象)来收集这些值。

setupStartValues

Added in API level 11
void setupStartValues ()

该方法告诉对象使用适当的信息来提取动画的起始值。 例如,一个AnimatorSet对象会将这个调用传递给它的子对象,告诉它们设置这些值。 ObjectAnimator对象将使用它所拥有的关于其目标对象和PropertyValuesHolder对象的信息来获取其属性的起始值。 ValueAnimator对象将忽略该请求,因为它没有足够的信息(如目标对象)来收集这些值。

start

Added in API level 11
void start ()

开始这个动画。 如果动画具有非零的startDelay,则动画将在延迟消逝后开始运行。 非延迟动画将立即设置其初始值,然后调用此动画师的任何听众的onAnimationStart(Animator)

通过调用此方法开始的动画将在调用此方法的线程上运行。 这个线程应该有一个Looper(如果不是这种情况,将会抛出一个运行时异常)。 此外,如果动画会为视图层次结构中的对象的属性制作动画,则调用线程应该是该视图层次结构的UI线程。

开始这个AnimatorSet将反过来开始它负责的动画。 动画何时开始的细节取决于动画之间已建立的依赖关系。

toString

Added in API level 11
String toString ()

返回对象的字符串表示形式。 一般来说, toString方法返回一个“文本表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。

ObjecttoString方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @ ”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:

 getClass().getName() + '@' + Integer.toHexString(hashCode())
 

Returns
String a string representation of the object.

Hooray!