2012-07-24 5 views
40

Je commence à jouer avec les animations de propriétés sur les animations de vue, car j'ai une vue qui doit être mise à l'échelle et repousser les autres comme elle le fait. J'ai vu quelques exemples mais je me demandais s'il y a n'importe où qui fournit une liste des propriétés qui peuvent être modifiées en utilisant ces classes. Par exemple, j'ai vu un tutoriel qui a fait une rotation rapide à l'aide:Propriétés Android pouvant être animées avec ObjectAnimator

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

Ce qui est assez cool, mais je ne l'aurais pas connu la propriété de rotation sinon pour ce tutoriel exact, est-il une liste complète de ce peut être fait? La propriété particulière que je veux animer est le poids d'une vue dans un LinearLayout, si quelqu'un a des conseils à ce sujet.

Répondre

51

Mieux vaut tard que jamais, voici donc la liste complète des propriétés qui peuvent être animées avec ObjectAnimator.

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

+1

Je suis curieux de savoir si c'est la liste complète? Sur 9OldAndroid, il y a un exemple qui anime la couleur d'arrière-plan d'une vue, qui n'est pas spécifiée dans la liste. http://nineoldandroids.com/ ObjectAnimator.ofInt (this, "backgroundColor",/* Red */0xFFFF8080,/* Blue */0xFF8080FF); ' –

+3

La liste n'est pas complète, il y a à la liste" xFraction "et" yFraction "qui fonctionne (vu dans [l'échantillon DevBytes Sliding Fragments] (https://www.youtube.com/watch?v=xbl5cxfA1n4)) –

+6

Une liste complète n'existera pas étant donné qu'elle fonctionne avec tout ce qui a un nom propre getter/setter (réflexion), ou en définissant une propriété personnalisée. Voir http://stackoverflow.com/a/28381280/1290264. – bcorso

22

Le Docs implique que toute valeur peut être utilisée avec ObjectAnimator aussi longtemps que vous suivez une convention de nommage:

  1. La propriété d'objet que vous animez doit avoir une fonction setter (en chameau) sous la forme set<propertyName>(). Parce que l'ObjectAnimator met automatiquement à jour la propriété pendant l'animation , il doit pouvoir accéder à la propriété avec cette méthode setter. Par exemple, si le nom de la propriété est foo, vous devez disposer d'une méthode setFoo(). Si cette méthode setter n'existe pas, vous avez trois : Options
    • Ajouter la méthode setter à la classe si vous avez le droit à faire.
    • Utilisez une classe wrapper que vous avez le droit de modifier et que ce wrapper reçoive la valeur avec une méthode setter valide et transfère à l'objet d'origine.
    • Utilisez ValueAnimator à la place.
  2. [...]

En ce qui concerne votre question, View a la méthode setRotation(float) - qui vous donne une indication qu'il peut être utilisé. En particulier, voici comment vous le feriez avec un TimeInterpolator particulier:

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 

Vous pouvez lire la documentation pour plus de détails sur les attentes des ObjectAnimator.

5

Voici la liste complète des noms de propriété que vous recherchez:

  • rotation
  • rotationX
  • rotationY
  • translationX
  • TranslationY
  • scaleX
  • scaleY
  • PivotX
  • pivotY
  • alpha
  • x
  • y

Source: Docs

Questions connexes