Как мне сделать что-то, когда заканчивается анимация?

У меня есть ImageView который я использую для показа прогресса через AnimationDrawable . Когда я хочу показать свой счетчик производительности, я делаю это:

 animDrawable.start(); ObjectAnimator.ofFloat(view, "alpha", 1.0f).setDuration(300).start(); 

Когда я хочу скрыть прядильщик, я делаю это:

 ObjectAnimator.ofFloat(view, "alpha", 0.0f).setDuration(300).start(); animDrawable.stop(); 

Однако это приводит к немедленному прекращению анимации. Я бы хотел, чтобы он остановился только после того, как ObjectAnimator полностью исчез до 0.0 альфы. Есть ли способ настроить что-то в соответствии с обратным вызовом «AnimationCompleted»?

Более современный способ сделать это – использовать ViewPropertyAnimator :

 view.animate() .alpha(0f) .withEndAction(new Runnable() { @Override public void run() { // Do something. } }) .start(); 

Или, если вы используете RetroLambda:

 view.animate() .alpha(0f) .withEndAction(() -> { // Do something. }) .start(); 

К исходному вопросу об объекте ObjectAnimator вы можете настроить объект Animator.AnimatorListener, который определяет несколько обратных вызовов состояния анимации. Вы хотите переопределить public void onAnimationEnd (анимация аниматора)

 animation.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animation) { } @Override public void onAnimationEnd(Animator animation) { Toast.makeText(VideoEditorActivity.this, "animation ended", Toast.LENGTH_LONG).show(); } @Override public void onAnimationCancel(Animator animation) { } @Override public void onAnimationRepeat(Animator animation) { } }); 

Вы также можете посмотреть postOnAnimation (Runnable)

Ссылка на Документы: postOnAnimation (java.lang.Runnable)

Давайте будем гением компьютера.