带有一些 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)
时,它会将 rotation
从 0
动画化为 3600
。 (默认视图旋转为 0
)。在第一个动画 rotation
之后是 3600
(ViewPropertyAnimator
在动画中更改 属性 的实际值)。因此,当您第二次调用 rotation(3600)
时,您的视图 rotation
已经是 3600
并且您尝试将其动画化为 3600
。这就是为什么没有视觉变化的原因。有rotationBy方法将指定值应用于视图旋转,尝试使用它。
view.animate().rotationBy(3600)
另一个解决方案是从 0 到 360 设置动画,并在动画结束时将视图旋转重置为 0。
我的 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)
时,它会将 rotation
从 0
动画化为 3600
。 (默认视图旋转为 0
)。在第一个动画 rotation
之后是 3600
(ViewPropertyAnimator
在动画中更改 属性 的实际值)。因此,当您第二次调用 rotation(3600)
时,您的视图 rotation
已经是 3600
并且您尝试将其动画化为 3600
。这就是为什么没有视觉变化的原因。有rotationBy方法将指定值应用于视图旋转,尝试使用它。
view.animate().rotationBy(3600)
另一个解决方案是从 0 到 360 设置动画,并在动画结束时将视图旋转重置为 0。