Java 为什么不直接调用animatorset上的cancel方法?animatorset到底是什么?

Java 为什么不直接调用animatorset上的cancel方法?animatorset到底是什么?,java,android,Java,Android,我有三个问题需要澄清,其中一个是安卓开发者在这个链接上提供的代码:(我不想让代码压倒你,所以我没有在这里复制和粘贴代码,代码在“缩放视图”部分) 1) 所以我的问题是程序员为什么要做以下事情mCurrentAnimator=set然后写入 if (mCurrentAnimator != null) { mCurrentAnimator.cancel(); } 让我快速地提到,mCurrentAnimator是一个Animator对象,set是一个Anim

我有三个问题需要澄清,其中一个是安卓开发者在这个链接上提供的代码:(我不想让代码压倒你,所以我没有在这里复制和粘贴代码,代码在“缩放视图”部分)

1) 所以我的问题是程序员为什么要做以下事情
mCurrentAnimator=set
然后写入

if (mCurrentAnimator != null) {
            mCurrentAnimator.cancel();
        }
让我快速地提到,mCurrentAnimator是一个Animator对象,set是一个AnimatorSet对象。我的困惑在于,为什么开发人员觉得在调用
cancel()
之前需要将a Animator object=设置为AnimatorSet对象,因为从我的角度来看,既然
AnimatorSet扩展了Animator
,那么我就不能直接调用cancel方法了。既然子类已经可以调用某个方法,为什么还要让子类调用一个超类来调用该方法呢

2) 我的问题是什么是
动画师
,因为当我查看文档时,有一些此类方法,例如
public void setTarget(Object target)
,这让我感到困惑。让我感到困惑的是,描述中说明此方法“设置其属性将通过此动画设置动画的目标对象”。仅仅通过提供一个目标,动画师就可以精确地告诉我们要设置动画的属性是什么


3) 另外,animator方法之一是
public void setupStartValues()
,描述中说“此方法告诉对象使用适当的信息提取动画的起始值。例如,AnimatorSet对象将此调用传递给其子对象,以告诉它们设置值。”,我不明白的是,如何将一个方法传递到子对象中,以及该方法如何告诉对象使用哪些信息以使其合适???

对于第一个问题,该示例的主要功能是在用户单击图像缩略图时缩放图像缩略图。您会注意到,mCurrentAnimator.cancel()方法是在onClick方法的最开始调用的,而mCurrentAnimator=set是在最后调用的。这样做的目的是,一旦创建并启动动画,程序将保存对它的引用。这是很有用的,因为如果用户单击缩略图,图像开始动画,并且在动画运行时,用户再次单击图像,该怎么办?mCurrentAnimator将保留对当前正在进行的动画的引用,mCurrentAnimator.cancel()将停止该动画,以便onClick方法可以创建另一个动画,以响应最近的单击

对于第二个问题,简单地说,动画师通过更改给定视图的属性来设置其动画。为了解决围绕setTarget方法的困惑,该方法不是构造函数。如果要创建新的动画师,可以使用ObjectAnimator类中的Offload、ofArgb或类似的静态方法。你可以读到他们。使用这些方法,可以告诉动画师需要更改哪些属性。setTarget方法仅用于更改在现有动画师中设置动画的对象,如果要将同一个动画师应用于多个视图,这将非常有用

最后,AnimatorSet本质上是一个容器,用于保存要一起播放或按顺序播放的不同动画。非常简单,“传递调用”意味着,当您在AnimatorSet上调用setupStartValues()时,它会在属于该集合的每个动画师上调用setupStartValues()方法


我希望这有帮助

哦,谢谢,我现在明白了,但我还是有点困惑,你说卸载,ofArg是构造器,但这些是一个新对象的构造器,而不是动画。我检查了,animator类中不存在卸载方法或ofArgb。希望您能为我澄清这一点。Animator类只是AnimatorSet、ValueAnimator和ObjectAnimator等类的父类,大概是为每个特定类提供所有类型动画使用的常用方法,如start()、cancel()等。如果要为对象设置动画,则不会创建Animator的新实例,而是创建更具体的ObjectAnimator类的实例。同样,如果要组合动画师,可以创建动画师集,而不仅仅是普通动画师。