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);
            }