Mam pytanie dotyczące ObjectAnimator w systemie Android. Próbuję wymodelować efekt Odbicie, w którym widok przesuwa się w górę (zmniejszając wartość Y) i z powrotem w dół o tę samą wartość "n", a następnie przesuwa się widok w górę iw dół, ale tym razem o "n/2" (czyli połowa odległości).Android - AnimatorSet, Object Animator - łączy się animacja Bounce?
Tak więc większe odbijanie, po którym następuje płytsza odskok - to znaczy coś, co ikona Maca robi na tacy, gdy chce twojej uwagi.
Oto, co starałem tak daleko (zakładamy v
jest View
):
float y = v.getTranslationY(),distance = 20F;
AnimatorSet s = new AnimatorSet();
s.play(ObjectAnimator.ofFloat(v, "translationY", y- distance).setDuration(500))
.before(ObjectAnimator.ofFloat(v, "translationY", y).setDuration(500))
.before(ObjectAnimator.ofFloat(v, "translationY", y- (distance/2)).setDuration(500))
.before(ObjectAnimator.ofFloat(v, "translationY", y).setDuration(500));
s.start();
Ignoruj jakość kodu, to POC! Miałem nadzieję, że to zadziała, ale wydaje się, że "odbija się" tylko tak, jakby łączyło animacje mimo użycia .before()
.
Czy mógłbyś pokazać mi, jak mogę utworzyć złożone łańcuchy AnimatorSet, które nie łączą się z jednym, ponieważ wydaje mi się, że czegoś brakuje?
BONUS: Aby uzyskać dodatkowe informacje, jak ustawić powtarzanie AnimatorSet?
Wielkie dzięki!
użyj http://www.jefflinwood.com/2013/04/repeating-android-animations-with-animatorset/ jeśli chcesz powtórzyć –
"Brudny hack z wywoływaniem onAnimationEnd w słuchaczu" - Wydaje się, że artykuł opisuje to samo podejście. – ComethTheNerd
Och, źle odczytałem twój komentarz. Jednak wywołanie od momentu zakończenia animacji nie będzie się liczyło jako brudne IMO. –