我的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上的其他方法可以正常工作。
答案 0 :(得分:0)
第一次调用rotation(3600)
时,它会将rotation
从0
动画到3600
。 (默认视图旋转为0
)。在第一个动画rotation
为3600
之后(ViewPropertyAnimator
在对事物进行动画处理时更改属性的实际值)。因此,当您第二次调用rotation(3600)
时,视图中的rotation
已经是3600
了,您尝试将其设置为3600
的动画。这就是为什么没有视觉变化的原因。有rotationBy方法将指定值应用于视图旋转,请尝试使用它。
view.animate().rotationBy(3600)
另一种解决方案是将动画设置为0到360,然后在动画结束时将视图旋转角度设置为0。