带有一些 ImageViews 的动画包

Animation bag with some ImageViews

我的 android 动画有问题。当我第一次单击我的 ImageView 时,我的图像有旋转,但是当我第二次单击我的 ImageView 时,旋转不起作用。为什么会这样?

我在Java代码中的旋转方法:

private boolean tomIsInvisible = false;



public void eraseTom(View view) {
    ImageView tom = findViewById(R.id.tom);
    ImageView jerry = findViewById(R.id.jerry);

    if (tomIsInvisible) {

        tom.animate()
                .rotation(3600)
                .scaleX(1)
                .scaleY(1)
                .alpha(1)
                .setDuration(3000);

        jerry.animate()
                .rotation(3600)
                .scaleX(0)
                .scaleY(0)
                .alpha(0)
                .setDuration(3000);

        tomIsInvisible = false;

    } else if(!tomIsInvisible) {

        tom.animate()
                .rotation(3600)
                .scaleX(0)
                .scaleY(0)
                .alpha(0)
                .setDuration(3000);

        jerry.animate()
                .rotation(3600)
                .alpha(1)
                .scaleX(1)
                .scaleY(1)
                .setDuration(3000);

        tomIsInvisible = true;
    }
}

我的 ImageView 上的其他方法工作正常。

当您第一次调用 rotation(3600) 时,它会将 rotation0 动画化为 3600。 (默认视图旋转为 0)。在第一个动画 rotation 之后是 3600ViewPropertyAnimator 在动画中更改 属性 的实际值)。因此,当您第二次调用 rotation(3600) 时,您的视图 rotation 已经是 3600 并且您尝试将其动画化为 3600。这就是为什么没有视觉变化的原因。有rotationBy方法将指定值应用于视图旋转,尝试使用它。

view.animate().rotationBy(3600)

另一个解决方案是从 0 到 360 设置动画,并在动画结束时将视图旋转重置为 0。