2017-02-03 3 views
1

Ich versuche ein ImageButton zu animieren, so dass es sich jedes Mal ein wenig bewegt, wenn es angeklickt wird. Aus bestimmten Gründen funktioniert die Animation jedoch nur einmal.Animation funktioniert nur einmal

Code:

public void ballClicked(View v) { 

     imgBtn.clearAnimation(); 
     imgBtn.animate().translationX(50).setDuration(500).start(); 
     imgBtn.animate().translationY(50).setDuration(500).start(); 

     oldX = oldX+50; 
     oldY = oldY+50; 
     imgBtn.setClickable(false); 

     // Using this as Animation Listener doesn't trigger when the animation finish 
     new Handler().postDelayed(new Runnable() { 
      public void run() { 
       imgBtn.setX((float)oldX+50); 
       imgBtn.setY((float)oldY+50); 
       imgBtn.setClickable(true); 
      } 
     }, 500); 

    }` 
+0

möchten Sie nach Zeit oder nach Klick animieren. Welche Mittel sollten zu einer bestimmten Zeit animiert werden oder wenn der Nutzer klickt? – W4R10CK

+0

@Slamit überprüfe meine Antwort^_^ –

+0

Ich möchte nach clic animieren. Die Post-Verzögerung ist hier, da ich den Animations-Handler nicht arbeiten lassen kann, wenn es an einer anderen Klasse arbeitet ... @Charu, ich werde versuchen, wenn Adroid Studio fertig ist :( – Slamit

Antwort

1

Das funktioniert!

public void ballClicked(View v) { 

    imgBtn.clearAnimation(); 

    oldX = oldX + 50; 
    oldY = oldY + 50; 

    imgBtn.animate().translationX(oldX).setDuration(500).start(); 
    imgBtn.animate().translationY(oldY).setDuration(500).start(); 

    new Handler().postDelayed(new Runnable() { 
     public void run() { 
      imgBtn.setX((float) oldX + 50); 
      imgBtn.setY((float) oldY + 50); 

     } 
    }, 500); 


} 
+0

Das würde bedeuten, dass der Wert genommen wird by TranslationX basiert auf der ursprünglichen Position, es macht keinen Sinn für mich, aber ich werde versuchen – Slamit

+0

@Slamit es macht Sinn und es sollte sich bewegen versuchen und lassen Sie mich wissen, was du getan hast war zweiten Zug und andere Züge waren für die gleiche Position, so dass Sie keine Animation gleich nach der ersten sehen werden –

+1

Ok Lesen der doc Ich bekomme es in der Tat (ich sollte es öfter ...): translationX Eigenschaft auf den angegebenen Wert animiert werden aber mein coord da. danke für die hilfe. wetten wäre dann in meinem fall eine übersetzung.ByX. – Slamit