Как проверить, запущена ли анимация, прежде чем начинать новую?
У меня есть действие, где у меня есть несколько ImageViews, и когда вы нажимаете на него, ImageView исчезает и снова исчезает. Я пытаюсь выяснить, как я могу щелкнуть один ImageView и запустить анимацию, и когда я нажимаю второй один, и анимация все еще работает, он будет игнорировать второй. Я думаю, что мне нужно что-то сделать с animationListener, но я не могу понять, как использовать это, чтобы проверить, запущена анимация или нет, прежде чем я начну новую анимацию. Я мог бы поклясться, что видел пример, который сделал это, но я искал несколько дней и не могу найти его больше, я надеюсь, что кто-то сможет помочь здесь..... ниже приведен код моего анимация:
// Create Animation
protected void fadeAnimation() {
tempImg.startAnimation(fadeout);
//Allow animation to finish
mHandler.postDelayed(new Runnable() {
public void run() {
tempImg.startAnimation(fadein);
}
}, 1000);
}
Ответы
Ответ 1
Я предполагаю, что и fadeout и fadein являются объектами Animation
.
Используйте fadeout.hasEnded()
, чтобы проверить, закончилось ли первое, прежде чем начинать второй.
Подробнее о классе Animation
см. здесь:
http://developer.android.com/reference/android/view/animation/Animation.html
Ответ 2
Вместо того, чтобы зацикливаться, возможно, в другом потоке, проверяющем, завершилась ли анимация, вы можете использовать прослушиватель анимации, делая что-то вроде этого:
// Create Animation
protected void fadeAnimation() {
fadeout.setAnimationListener(new Animation.AnimationListener(){
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
tempImg.startAnimation(fadein);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
};
tempImg.startAnimation(fadeout);
}
При таком решении вам не нужно будет активно проверять, завершена ли анимация, и время ее с продолжительностью предыдущей анимации.
OnAnimationEnd (Анимация) запускается сразу после окончания анимации. Это также решает проблему пользователей с параметрами разработчика "on" и скоростью анимации, установленной на "off".