2017-08-20 1 views
1

Wie kann ich Bounce-Animation hinzufügen, um zu sehen, welche gehen wird und kommen, aber es sollte nur für einmal tun.Bounce-Animation mit Tiefe

wenn i gesetzt prallen Interpolator mit y seine für gegebene Dauer Prellen aber ich will es nur ein einziges Mal, aber es sollte 5dp sagen, gehen nach unten und bis zu aktuellen Ansicht

ObjectAnimator animator = ObjectAnimator.ofFloat(targetView, "translationY", 0, 50, 0); 
    animator.setInterpolator(new BounceInterpolator()); 
    animator.setDuration(200); 
    animator.start(); 

Antwort

1

Verwendung OvershootInterpolator.

Doc:

Ein Interpolator in dem die Änderung nach vorne schleudert und schießt über den letzten Wert kommt dann zurück.

Sie können die Spannung des Überschwingens stellen Sie den Konstruktor mit tension Parameter verwendet:

OvershootInterpolator(float tension) 

Spannung: Höhe der Überschreitung. Wenn die Spannung gleich 0.0f ist, gibt es kein Überschwingen und der Interpolator wird zu einem einfachen Interpolator.

Der Standardwert von tension ist 2.0f.

Beispiel mit ViewPropertyAnimator:

targetView.animate() 
    .translationY(50) 
    .setInterpolator(new OvershootInterpolator()) 
    .setDuration(200); 

ObjectAnimator mit:

ObjectAnimator animator = ObjectAnimator.ofFloat(targetView, "translationY", 0, 50); // pass only start and end values. 
    animator.setInterpolator(new OvershootInterpolator()); 
    animator.setDuration(200); 
    animator.start(); 
+0

mit ObjectAnimator? – andro

+0

Ja. 'ObjectAnimator' oder' ViewPropertyAnimator'. Beides sollte funktionieren. – Bob

+0

In einem verwandten Hinweis können Sie 'View.TRANSLATION_Y' anstelle von' "translationY" 'an den' ObjectAnimator' übergeben, wobei ersterer der bessere ist, da letzterer eine Reflexion beinhaltet. Oder benutze 'ViewPropertyAnimator'. Es ist [besser als ObjectAnimator] (https://android-developers.googleblog.com/2011/05/introducing-viewpropertyanimator.html) – Bob