Android-анимация не завершена в OnAnimationEnd - PullRequest
65 голосов
/ 20 января 2011

Кажется, что анимация андроида действительно не завершена, когда происходит событие onAnimationEnd, хотя для animation.hasEnded установлено значение true.

Я хочу, чтобы мой вид изменил свой фон для рисования в конце его ScaleAnimation, что он и делает, но вы можете ясно видеть, что он изменяется за несколько миллисекунд до его завершения. Проблема в том, что он мерцает, потому что новый фон появляется (= is) в течение короткого времени, пока анимация действительно не закончится.

Есть ли способ получить реальный конец анимации или просто предотвратить масштабирование нового фона в этот короткий промежуток времени?

Спасибо!


// РЕДАКТИРОВАТЬ: я использую AnimationListener, чтобы получить следующий вызов:

    @Override
public void onAnimationEnd(Animation animation)
{
    View view = (MyView) ((ExtendedScaleAnimation) animation).getView();

    view.clearAnimation();
    view.requestLayout();
    view.refreshBackground(); // <-- this is where the background gets changed
}

Ответы [ 11 ]

0 голосов
/ 30 октября 2013

Это сработало для меня:

@Override
public void onAnimationUpdate(ValueAnimator animation) {
    if (Float.compare(animation.getAnimatedFraction(),1.0f)) {
    // animation ended;
        //do stuff post animation
    }
}
...