Android AnimationListener的问题
我正试图写一部漂亮的动画,但是有困难 在下面的代码中,它可以工作,但没有我需要的那么多。第一个按钮显示动画,但第二个和第三个按钮不显示动画。我做错了什么 动画:Android AnimationListener的问题,android,android-animation,Android,Android Animation,我正试图写一部漂亮的动画,但是有困难 在下面的代码中,它可以工作,但没有我需要的那么多。第一个按钮显示动画,但第二个和第三个按钮不显示动画。我做错了什么 动画: <?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:shareInterpolator="false" > <alpha
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false" >
<alpha
android:duration="1000"
android:fromAlpha="0.0"
android:startOffset="0"
android:toAlpha="1.0" >
</alpha>
<translate
android:fromXDelta="-100%"
android:duration="1000"
android:toXDelta="0" />
</set>
更改这些行:
if (mAnimationsFinished == 0) { //kitchenBtn animation ended
hotelBtn.setAnimation(fallingAnimation);
} else if (mAnimationsFinished == 1) { //hotelBtn animation ended
engenerBtn.setAnimation(fallingAnimation);
}
为此:
if (mAnimationsFinished == 0) { //kitchenBtn animation ended
hotelBtn.startAnimation(fallingAnimation);
} else if (mAnimationsFinished == 1) { //hotelBtn animation ended
engenerBtn.startAnimation(fallingAnimation);
}
尝试startAnimation而不是setAnimation:
@Override
public void onAnimationEnd(Animation animation) {
if (mAnimationsFinished == 0) { //kitchenBtn animation ended
kitchenBtn.clearAnimation();
hotelBtn.startAnimation(fallingAnimation);
} else if (mAnimationsFinished == 1) { //hotelBtn animation ended
hotelBtn.clearAnimation();
engenerBtn.startAnimation(fallingAnimation);
}
mAnimationsFinished++; //This would be a member variable
Log.d("mylognah", "finish" + " " + mAnimationsFinished);
}
setAnimation
设置要为此视图播放的下一个动画。但视图动画尚未开始
启动动画
如果要立即播放动画,请使用startAnimation。此方法允许对启动时间和失效进行细粒度控制,但必须确保
1) 动画设置了开始时间
2) 当动画开始时,视图将无效。现在行为是:在第一个按钮上调用动画。它结束的地方再次被称为动画,但所有三个按钮都被称为动画。然后,您可以尝试清除不想设置动画的视图上的动画。例如,在开始hotelBtn动画之前,在KitchenBtnTanks上调用clearAnimation(),您的建议更完整!还有一个小问题。动画上的第三个按钮仍然未调用(请参阅我编辑的答案。您每次都应该调用clearAnimation。我尝试了此操作,它对meNow有效。行为是:在第一个按钮上调用动画。结束时再次调用动画,但所有三个按钮都被调用。完成动画后,请删除动画侦听器。如:fallingAnimation.setAnimationListener(null);在onAnimationEnd()方法中。
@Override
public void onAnimationEnd(Animation animation) {
if (mAnimationsFinished == 0) { //kitchenBtn animation ended
kitchenBtn.clearAnimation();
hotelBtn.startAnimation(fallingAnimation);
} else if (mAnimationsFinished == 1) { //hotelBtn animation ended
hotelBtn.clearAnimation();
engenerBtn.startAnimation(fallingAnimation);
}
mAnimationsFinished++; //This would be a member variable
Log.d("mylognah", "finish" + " " + mAnimationsFinished);
}