2017-01-20 1 views
0

Ce que j'essaie de faire, c'est de faire bouger le bouton ImageView à la pression du bouton, et lorsque l'animation est terminée, l'image de ImageView disparaît.Exécuter l'instruction une fois l'animation terminée

Je veux que cette déclaration à exécuter d'abord:

ObjectAnimator 
       .ofFloat(img, "translationX", 0, 25, -25, 25, -25, 15, -15,  6, -6, 0) 
       .setDuration(300) 
       .start(); 

et après l'animation est terminée, cette déclaration doit exécuter:

 img.setImageResource(android.R.color.transparent); 

Je les ai un après l'autre, de sorte que l'animation n » t fin les images sont parties.

Répondre

1

Utilisez le code ci-dessous,

ObjectAnimator.ofFloat(img, "translationX", 0, 25, -25, 25, -25, 15, -15,  6, -6, 0).addListener(new AnimatorListenerAdapter() { 
      @Override 
      public void onAnimationEnd(Animator animation) { 
       super.onAnimationEnd(animation); 
       Log.e("Animation-Completed:", "onAnimationEnd"); 
       img.setImageResource(android.R.color.transparent); 
      } 
     }).setDuration(300).start(); 

Edit: pour ajouter la durée:

ObjectAnimator anim = ObjectAnimator.ofFloat(img, "translationX", 0, 25, -25, 25, -25, 15, -15,  6, -6, 0); 
anim.setDuration(300);     // Duration in milliseconds 
anim.addListener(new AnimatorListenerAdapter() { 
       @Override 
       public void onAnimationEnd(Animator animation) { 
        super.onAnimationEnd(animation); 
        Log.e("Animation-Completed:", "onAnimationEnd"); 
        img.setImageResource(android.R.color.transparent); 
       } 
      }); 
anim.start(); 
+0

Je reçois une erreur 'variable 'img' est accessible à partir de la classe interne, et doit être déclaré final'. – Eddie

+0

:) @Eddie suffit de suivre l'erreur et ajouter le mot-clé 'final' avant la déclaration de la variable' img' comme ci-dessous, 'final ImageView img = (ImageView) findViewById (R.id.some_id);' –

+0

Puis-je encore changer ses propriétés, si elle est déclarée finale? – Eddie

0

utilisation ci-dessous le code:

ObjectAnimator 
      .ofFloat(img, "translationX", 0, 25, -25, 25, -25, 15, -15,  6, -6, 0) 
      .setDuration(300) 
      .start() 
      .addListener(new Animator.AnimatorListener() { 
       @Override 
       public void onAnimationStart(Animator animator) { 

       } 

       @Override 
       public void onAnimationEnd(Animator animator) { 
        img.setImageResource(android.R.color.transparent); 
       } 

       @Override 
       public void onAnimationCancel(Animator animator) { 

       } 

       @Override 
       public void onAnimationRepeat(Animator animator) { 

       } 
      });