API 25 (Android 7.1.1 API) animation.AnimatorSet



Android API 25(Andrid 7.1.1)


AnimatorSet

public final class AnimatorSet

extends Animator

Added in API level 11

 

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.Builder

Builder对象是一个实用程序类,用于方便向AnimatorSet添加动画以及各种动画之间的关系。

 

【公共构造函数】

AnimatorSer()

 

【公共方法】

getDuration

long getDuration ()

API 11

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

 

setDuration

Animator setDuration (long duration)

API 11

设置动画的持续时间。

设置此AnimatorSet的每个当前子动画的长度。 默认情况下,每个子动画将使用自己的持续时间。 如果在AnimatorSet上设置持续时间,则每个子动画都会继承此持续时间。

getTotalDuration

long getTotalDuration ()

API 24

获取动画的总持续时间,考虑动画序列,开始延迟和重复。 如果持续时间为无限,则返回DURATION_INFINITE

 

getInterpolator

TimeInterpolator getInterpolator ()

API 18

返回此动画使用的时间插值器。

 

setInterpolator

void setInterpolator (TimeInterpolator value)

API 11

为此AnimatorSet的所有当前子动画设置TimeInterpolator。 默认值为null,这意味着在此AnimatorSet上没有设置插值器。 将内插器设置为任何非空值将导致在集合启动时在子动画上设置内插器。

 

getStartDelay

long getStartDelay ()

API 11

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

 

setStartDelay

void setStartDelay (long startDelay)

API 11

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

注意,启动延迟应始终为非负。 任何负启动延迟将在N及以上版本时强制为0

 

isStarted

boolean isStarted ()

API 14

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

对于可重复使用的Animator(除了通过createCircularReveal()生成的一次性Animator之外,大多数Animator,这个状态是isRunning()的超集,因为具有非零startDelayAnimator在延迟期间将返回isStarted 相位,而isRunning()将只有在延迟阶段完成后才会返回true。 不可重复使用的动画器在启动后总是返回true,因为它们不能返回到非启动状态。

 

isRunning

boolean isRunning ()

API 11

如果此AnimatorSet的任何子动画已启动且尚未结束,则返回true。 直到AnimatorSet通过setStartDelaylong)超过其初始延迟集才启动子动画。

 

isPaused

boolean isPaused ()

API 19

返回此Animator当前是否处于暂停状态。

 

start

void start ()

API 11

开始本动画。 如果动画具有非零的startDelay,则动画将在延迟结束后开始运行。 非延迟动画将立即设置其初始值,然后调用onAnimationStart(Animator)用于此Animator的任何监听器。

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

 

pause

void pause ()

API 19

暂停正在运行的动画。 此方法应该只在动画开始的同一个线程上调用。 如果动画尚未开始或者已经结束,则忽略该调用。 暂停的动画可以通过调用resume()恢复。

 

resume

void resume ()

API 19

恢复已暂停的动画,使 animator在暂停时从中断的位置继续。 此方法应该只在动画开始的同一个线程上调用。 对当前未暂停的animatorresume()调用将被忽略。

 

cancel

void cancel ()

API 11

取消动画。 end()不同,cancel()使动画在其轨道中停止,向其侦听器发送onAnimationCancel(Animator),然后是

onAnimationEnd(Animator)消息。

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

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

 

end

void end ()

API 11

结束动画。 这将导致动画分配正在动画属性的结束值,然后在其侦听器上调用onAnimationEnd(Animator)方法。

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

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

 

clone

Animator clone ()

API 11

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

 

“复制”的精确含义可以取决于对象的类。 一般的意图是,对于任何对象x,表达式:

 x.clone() != x

将是真实的,并且表达式:

 x.clone().getClass() == x.getClass()

将是真的,但这些不是绝对的要求。 虽然通常的情况是:

 x.clone().equals(x)

将是真的,这不是绝对的要求。

按照惯例,返回的对象应该通过调用super.clone获得。 如果一个类及其所有的超类(除了Object)遵循这个约定,将会是 x.clone().getClass() == x.getClass().

 

按照惯例,此方法返回的对象应该独立于此对象(正在克隆)。为了实现这种独立性,可能需要在返回super.clone之前修改该对象的一个或多个字段。通常,这意味着复制包含正在克隆的对象的内部“深层结构”的任何可变对象,并使用对副本的引用替换对这些对象的引用。如果类只包含基本字段或对不可变对象的引用,则通常情况下,super.clone返回的对象中没有字段需要修改。

 

Object的方法克隆执行特定的克隆操作。首先,如果此对象的类未实现接口Cloneable,则会抛出CloneNotSupportedException。注意,所有数组都被认为实现了Cloneable接口,并且数组类型T []clone方法的返回类型是T [],其中T是任何引用或原始类型。否则,此方法将创建此对象的类的一个新实例,并使用此对象的相应字段的内容(如通过赋值)完全初始化其所有字段;字段的内容本身不被克隆。因此,该方法执行该对象的“浅拷贝”,而不是“深拷贝”操作。

 

Object本身不实现接口Cloneable,因此在类为Object的对象上调用clone方法将导致在运行时抛出异常。

 

setTarget

void setTarget (Object target)

API 11

设置其属性将由此动画进行动画处理的目标对象。 不是所有的子类都对目标对象进行操作(例如,ValueAnimator,但是这个方法在超类上,为的是方便地处理那些处理目标的子类。

 

注意:目标作为弱引用存储在内部,以避免由于动画师直接引用旧目标而导致的资源泄露。 因此,您应该确保animator目标总是在其他地方有一个硬引用。

 

setupEndValues

void setupEndValues ()

API 11

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

AnimatorSet对象将该调用传递给它的子对象,以告诉他们设置值。

ObjectAnimator对象将使用其有关其目标对象和PropertyValuesHolder对象的信息来获取其属性的结束值。

ValueAnimator对象将忽略该请求,因为它没有足够的信息(例如目标对象)来收集这些值。

 

setupStartValues

void setupStartValues ()

API 11

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

AnimatorSet对象将该调用传递给它的子对象,以告诉他们设置值。

ObjectAnimator对象将使用其有关其目标对象和PropertyValuesHolder对象的信息来获取其属性的起始值。

ValueAnimator对象将忽略该请求,因为它没有足够的信息(例如目标对象)来收集这些值。

 

getChildAnimations

ArrayList<Animator> getChildAnimations ()

API 11

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

 

play

AnimatorSet.Builder play (Animator anim)

API 11

此方法创建一个Builder对象,用于设置播放约束。 这个初始play()方法告诉Builder这个动画是后续命令对Builder的依赖。 例如,调用play(a1).with(a2)设置AnimatorSet同时播放a1a2play(a1).before(a2)设置AnimatorSet先播放a1,接着a2play(a1).after(a2) 设置AnimatorSet先播放a2,然后a1

 

注意,play()是告诉Builder生成依赖关系的动画的唯一方法,所以对Builder中的各种函数的连续调用都将引用play()中提供的初始参数作为其他动画的依赖 。 例如,当a1结束时,调用play(a1).before(a2).before(a3)将同时播放a2a3; 它不设置a2a3之间的依赖关系。

 

playSequentially

void playSequentially (List<Animator> items)

void playSequentially (Animator... items)

API 11

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

 

playTogether

void playTogether (Collection<Animator> items)

void playTogether (Animator... items)

API 11

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

这等效于用集合中的第一动画制作者调用play(Animator),然后用每个其他动画制作者调用with(Animator)。 注意,具有startDelayAnimator实际上不会启动,直到该延迟过去,这意味着如果提供给此构造函数的列表中的第一个动画制作者具有startDelay,则在第一个动画制作者的startDelay过去之前,其他动画制作者都不会开始。

 

toString

String toString ()

API 11

返回对象的字符串表示形式。 一般来说,toString方法返回一个“文本表示”此对象的字符串。 结果应该是一个简单但翔实的表示,是一个人很容易阅读。 建议所有子类覆盖此方法。

 

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值