studio icon developers animate android animation android-animation objectanimator

icon - Propiedades de Android que se pueden animar con ObjectAnimator



flip animation android studio (3)

Estoy empezando a jugar con las animaciones de propiedades en las animaciones de la vista, ya que tengo una vista que necesita escalar y empujar a otros fuera del camino como lo hace. 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:

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

Lo cual es genial, pero no hubiera sabido la propiedad de rotación si no fuera por ese tutorial exacto, ¿hay alguna lista exhaustiva de lo que se puede hacer? 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.


Aquí está la lista completa de nombres de propiedades que está buscando:

  • rotación
  • rotationX
  • rotaciónY
  • traducciónX
  • traducciónY
  • scaleX
  • scaleY
  • pivotX
  • pivotY
  • alfa
  • X
  • y

Fuente: Docs


Los Docs implican que cualquier valor se puede usar con ObjectAnimator siempre que sigas una convención de nomenclatura:

  1. La propiedad del objeto que está animando debe tener una función setter (en camel case) en forma de set<propertyName>() . Debido a que 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 este método setter no existe, tiene tres opciones:
    • Agregue el método setter a la clase si tiene los derechos para hacerlo.
    • Utilice una clase contenedora que tenga derechos para cambiar y haga que ese envoltorio reciba el valor con un método setter válido y lo reenvíe al objeto original.
    • Use ValueAnimator en su lugar.
  2. [...]

Con respecto a su pregunta, View tiene el método setRotation(float) - que le da una pista de que se puede usar. En particular, así es cómo lo haría con un TimeInterpolator particular:

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

Puede leer los documentos para obtener más detalles sobre las expectativas de ObjectAnimator .