2012-07-24 23 views
40

Estoy empezando a jugar con las animaciones de propiedades en las animaciones de visualización, ya que tengo una vista que necesita escalar y empujar a otros fuera del camino. He visto algunos ejemplos, pero me pregunto si hay algún lugar que proporcione una lista de las propiedades que pueden modificarse con estas clases. Por ejemplo, vi un tutorial que hizo una rotación rápida usando:Propiedades de Android que se pueden animar con ObjectAnimator

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

que es bastante fresco, pero yo no habría conocido la propiedad de rotación si no fuera por ese tutorial exacta, ¿hay alguna lista completa de lo ¿puede hacerse? La propiedad particular que quiero animar es el peso de una vista dentro de LinearLayout, si alguien tiene algún consejo sobre eso específicamente.

Respuesta

51

Mejor tarde que nunca, así que aquí está la lista completa de las propiedades que se pueden animar con ObjectAnimator.

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

+1

Estoy ansioso por ver si esa es la lista completa? En 9OldAndroid, hay un ejemplo que anima el color de fondo de una vista, que no se especifica en la lista. http://nineoldandroids.com/ 'ObjectAnimator.ofInt (this," backgroundColor ",/* Red */0xFFFF8080,/* Blue */0xFF8080FF);' –

+3

La lista no está completa, hay en la lista "xFraction" y " yFracción "que funciona (se vio en [ejemplo de DevBytes Sliding Fragments] (https://www.youtube.com/watch?v=xbl5cxfA1n4)) –

+6

No existirá una lista completa dado que funciona con cualquier elemento que tenga un nombre propio getter/setter (reflexión), o definiendo una propiedad personalizada. Ver http://stackoverflow.com/a/28381280/1290264. – bcorso

22

El Docs implica que cualquier valor puede ser usado con ObjectAnimator, siempre y cuando usted sigue una convención de nomenclatura:

  1. la propiedad del objeto que se está animando debe tener una función setter (en camello) en la forma de set<propertyName>(). Como el ObjectAnimator actualiza automáticamente la propiedad durante la animación , debe poder acceder a la propiedad con este método setter . Por ejemplo, si el nombre de la propiedad es foo, debe tener un método setFoo(). Si no existe este método de selección, tiene tres opciones:
    • Añadir el método de selección de la clase si usted tiene el derecho a hacerlo.
    • Utilice una clase contenedora que tenga derechos para cambiar y tenga esa envoltura reciba el valor con un método setter válido y reenvíe al objeto original.
    • Use ValueAnimator en su lugar.
  2. [...]

Con respecto a su pregunta, tiene View el método setRotation(float) - que le da un toque que puede ser utilizado. En particular, aquí es cómo usted lo haría con una determinada 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 

se puede leer la documentación para más detalles sobre las expectativas de ObjectAnimator.

5

Aquí está la lista completa de los nombres de propiedad que usted está buscando:

  • rotación
  • rotationX
  • rotationY
  • translationX
  • translationY
  • scaleX
  • scaleY
  • PivotX
  • pivotY
  • alfa
  • x
  • y

Fuente: Docs

Cuestiones relacionadas