0

Ich habe eine "Spur", die für 50 "Längen" geht und ich habe ImageView, die Position auf Klick für 5 "Längen" auf einmal ändert. Dieser Übergang ich mit Animation wie folgt behandeln:ImageView ObjectAnimator Transition + Kollisionserkennung während des Übergangs

anima = ObjectAnimator.ofFloat(bar, "translationX", position*pix); 
    anima.setDuration(500); 
    anima.start(); 

Am Ende der Strecke, die ich ein anderes Imageview, die ich Kollision erkannt werden soll mit, damit ich nach der Animation ich dies tun:

anima.addListener(new AnimatorListenerAdapter() { 
      @Override 
      public void onAnimationEnd(Animator animation) { 
       if (Rect.intersects(n1, barRect)) { 
        //Stuff after collision 
       } 


} 

Meine Frage ist, ist es eine Möglichkeit, eine Kollision zu erkennen während diese Animation, damit ich es nicht mehr, wenn Kollision irgendwo zwischen diesen ist „5 Länge springt“

+0

Sie müssen sich auf 'AnimatorUpdateListener'. https://developer.android.com/reference/android/animation/ValueAnimator.AnimatorUpdateListener.html –

+0

@NikolaDespotoski Danke für den Vorschlag klingt es vielversprechend, aber ich sehe onAnimationUpdate ist Methode von ValueAnimator und dieses Objekt hat nicht meine OfFloat-Übersetzungsmethode. Korrigieren Sie mich, wenn ich falsch liege bitte – user6754277

+0

Ich sehe, es gibt eine Methode (für objectAnimator) namens addUpdateListener, die ValueAnimator akzeptiert, so dass Ihre Antwort funktioniert, werde ich es einfach versuchen. :) – user6754277

Antwort

1

Dank @NikolaD espotski Ich habe es geschafft, das Problem zu lösen, indem implementig onUpdateListener für mein ObjectAnimator Objekt wie folgt:

anima.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { 
      @Override 
      public void onAnimationUpdate(ValueAnimator animation) { 
        //Do collision detection here 
      } 

    }); 
Verwandte Themen