带有一些ImageViews的动画包

时间:2019-05-28 19:57:43

标签: java android android-animation

我的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上的其他方法可以正常工作。

1 个答案:

答案 0 :(得分:0)

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

view.animate().rotationBy(3600)

另一种解决方案是将动画设置为0到360,然后在动画结束时将视图旋转角度设置为0。