2012-02-29 6 views
15

Używam wspaniałego frameworka NineOldAndroids, ale nie mogę znaleźć niczego, aby ustawić oś na moich animowanych widokach. Dokładniej, próbuję wykonać animację scaleX + scaleY z osią obrotu na lewej górnej krawędzi, więc pivotX = 0 i pivotY = 0. W przypadku Honeycomb i innych po prostu ustawiłbym myView.setPivotX(0) i myView.setPivotY(0), ale jak to zrobić dla urządzenia pre-Honeycomb z NineOldAndroids? Próbowałem:NineOldAndroids: ustaw widok przestawny

AnimatorSet set = new AnimatorSet(); 
set.playTogether(
    ObjectAnimator.ofFloat(myView, "pivotX", -(myView.getWidth()/2), -(myView.getWidth()/2)), 
    ObjectAnimator.ofFloat(myView, "pivotY", -(myView.getHeight()/2), -(myView.getHeight()/2)), 
    ObjectAnimator.ofFloat(myView, "scaleX", 0, 1), 
    ObjectAnimator.ofFloat(myView, "scaleY", 0, 1), 
    ObjectAnimator.ofFloat(myView, "alpha", 0, 1) 
); 
set.setDuration(1000).start(); 

ale to nie działa, przegroda pozostaje w centrum widoku.

Czy możesz mi pomóc?

Dzięki;)

+0

Nie sądzę, że NineOldAndroids obsługuje tę :-(On Honeycomb lub większej (API 11) można wywołać setPivotY (0), ale metoda ta nie jest dostępna w widoku Tom

+0

Tak, wiem ... Sprawdziłem kod źródłowy NineOldAndroids i znalazłem kilka odniesień do osi obrotu dla implementacji przed-Honeycomb, ale nie miałem szczęścia z moimi próbami ustawienia ... :( – Venator85

Odpowiedz

18

Dzięki autora Jake Wharton, oto rozwiązanie:

AnimatorProxy.wrap(myView).setPivotX(0); 

w dowolnym momencie, nawet po przywoławszy ObjectAnimator.start().

+0

Dzięki, nie wiedziałem, że to może być zrobione, to jest bardzo użyteczne, ponieważ bez tego nie można było wykonać wielu animacji na starszych urządzeniach – Tom

+2

+1 za dawanie autorowi pewności, możesz nawet iść dalej i połączyć swoje nazwisko z jego strona Linki wsteczne są smaczne SEO – Jacksonkr

+0

Wel l, dla mnie działało TYLKO PO wywoływaniu 'start()'. Może dlatego, że użyłem AnimatorSet –

15

AnimatorProxy.wrap (...) nie wywarł żadnego efektu w moim przypadku. Jednak następujący wiersz wystarczyły:

ViewHelper.setPivotY(myView, 0) 
+0

AnimatorProxy.wrap nie działa również dla mnie, używam AnimatorSet. Kciuki w górę za tę odpowiedź, bo w końcu mi pomogło –