首页 > 解决方案 > 对象动画只会为对象设置一次动画

问题描述

一旦按钮 ( randomButton) 被动画化了,它就不会再被动画化了——但是为什么呢?ObjectAnimator每次调用它时如何强制动画?

Button randomButton = eliminate();
randomButton.setText("");
objectAnimator = ObjectAnimator.ofFloat(randomButton, "rotation", 180);
objectAnimator.setDuration(500);
objectAnimator.start();

标签: javaandroid-studioobjectanimator

解决方案


您需要第二个值才能重新激活对象。

objectAnimator = ObjectAnimator.ofFloat(randomButton, "rotation", 180);

这来自https://developer.android.com/reference/android/animation/ObjectAnimator,“单个值意味着该值是被动画化的值,在这种情况下,起始值将来自被动画化的属性以及第一次调用 start() 时的目标对象。两个值表示开始值和结束值。超过两个值表示开始值、沿途动画的值和结束值(这些值将被分配在整个动画期间均匀分布)。”

正确的代码是:

    objectAnimator = ObjectAnimator.ofFloat(randomButton, "rotation", 0, 180);

推荐阅读