software programas programacion para hacer dibujos aplicaciones animados animaciones animacion android animation android-3.1

android - programas - ¿Cómo hago algo cuando termina una animación?



programas para hacer animaciones 2d android (3)

Tengo un ImageView que uso para mostrar el progreso a través de un AnimationDrawable . Cuando quiero mostrar mi spinner de progreso, hago esto:

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

Cuando quiero ocultar la ruleta, hago esto:

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

Sin embargo, esto tiene el efecto de que la animación se detiene inmediatamente. Me gustaría que se detuviera solo después de que el ObjectAnimator haya desvanecido por completo a 0.0 alfa. ¿Hay alguna manera de configurar algo similar a una devolución de llamada "AnimationCompleted"?


A su pregunta original sobre el objeto ObjectAnimator, puede configurar un objeto Animator.AnimatorListener que define varias devoluciones de llamada de estados de animación. Desea anular el vacío público en AnimationEnd (Animator animation)

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


La forma más moderna de hacer esto es usar ViewPropertyAnimator :

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

O bien, si está utilizando RetroLambda:

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