2012-07-24 13 views
40

Zaczynam bawić się animacjami właściwości nad animacjami widoku, ponieważ mam widok, który wymaga skalowania i odsuwania innych tak, jak robi to. Widziałem kilka przykładów, ale zastanawiam się, czy jest gdziekolwiek, co zapewnia listę właściwości, które można zmienić za pomocą tych klas. Na przykład, widziałem jeden poradnik, który zrobił szybki obrót przy użyciu:Właściwości systemu Android, które można animować za pomocą ObjectAnimator

ObjectAnimator.ofFloat(aniView, "rotation", 360) 

co jest całkiem fajne, ale ja nie wiedziałbym właściwość obracania jeśli nie w tym dokładnym samouczku jest jakaś niepełna lista tego, co Można to zrobić? Właściwość, którą chcę animować, jest wagą widoku w LinearLayout, jeśli ktoś ma jakąkolwiek radę na ten temat.

Odpowiedz

51

Lepiej późno niż wcale, więc oto pełna lista właściwości, które można animować za pomocą ObjectAnimatora.

http://developer.android.com/guide/topics/graphics/prop-animation.html#views

+1

Jestem ciekawy, czy to jest pełna lista? Na 9OldAndroid istnieje przykład animujący kolor tła widoku, który nie został określony na liście. http://nineoldandroids.com/ 'ObjectAnimator.ofInt (this," backgroundColor ",/* Red */0xFFFF8080,/* Blue */0xFF8080FF);' –

+3

Lista nie jest kompletna, istnieje na liście "xFraction" i " yFraction "to działa (patrz przykład [DevBytes Sliding Fragments sample] (https://www.youtube.com/watch?v=xbl5cxfA1n4)) –

+6

Pełna lista nie istnieje, ponieważ działa z wszystkim, co ma właściwe nazwy getter/setter (reflection) lub definiując niestandardową właściwość. Zobacz http://stackoverflow.com/a/28381280/1290264. – bcorso

22

The Docs oznaczać, że każda wartość może być używany z ObjectAnimator tak długo, jak postępować zgodnie z konwencją nazewnictwa:

  1. właściwości obiektu, które są animowanie musi mieć funkcję setter (w przypadku wielbłąda) w postaci set<propertyName>(). Ponieważ obiekt ObjectAnimator automatycznie aktualizuje właściwość podczas animacji , musi mieć możliwość uzyskania dostępu do właściwości za pomocą tej metody ustawiającej. Na przykład, jeśli nazwa właściwości to foo, musisz mieć metodę setFoo(). Jeśli ta metoda ustawiająca nie istnieje, masz trzy opcje:
    • dodać metody setter do klasy, jeśli masz prawa do zrobić.
    • Użyj klasy opakowania, do której masz prawa do zmiany, i uzyskaj wartość , która otacza wartość za pomocą prawidłowej metody ustawiacza i przesyła ją do oryginalnego obiektu o wartości .
    • Zamiast tego użyj ValueAnimator.
  2. [...]

waszym pytaniu View ma metodę setRotation(float) - który daje wskazówkę może być używany. W szczególności oto jak byś go z konkretnym TimeInterpolator:

ObjectAnimator anim = ObjectAnimator.ofFloat(myView, "rotation", 0f, 90f); 
anim.setDuration(2000);     // Duration in milliseconds 
anim.setInterpolator(timeInterpolator); // E.g. Linear, Accelerate, Decelerate 
anim.start()        // Begin the animation 

Możesz przeczytać dokumenty dla więcej szczegółów na temat oczekiwań ObjectAnimator.

5

Oto niepełna lista nazw właściwości, które szukasz:

  • obrotu
  • rotationX
  • rotationY
  • translationX
  • translationY
  • scaleX
  • scaleY
  • pivotX
  • pivotY
  • alfa
  • x
  • y

Źródło: Docs

Powiązane problemy