Gestión dinámica de componentes QML – II

Las animaciones permiten cambiar el UI de forma progresiva y dinámica. Una animación (Animation) cambia una propiedad de forma progresiva a lo largo del tiempo. Permite dotar de fluidez al UI. Hay distintos tipos de animaciones para situaciones diferentes. Soporta agrupamiento y anidación.

  • Todas las animaciones heredan del componente base Animation
  • Las propiedades asociadas a Animation son: running, paused, loops, alwaysRunToEnd
  • También se pueden usar de forma imperativa mediante los métodos: start, stop, pause, resume, restart, complete

Tipos de Animaciones

Existen distintos tipos de animaciones que tendremos que conocer en detalle:

  • Asociadas a propiedades (Property Value Sources)
  • Según comportamiento (Behavioral)
  • Manejador de señal (Signal handlers)
  • Independientes (Standalone)
  • Transiciones de estado (State transitions)
Asociadas a propiedades  (Property Value Sources)

La animación proporciona los valores a una propiedad. Existen tres propiedades fundamentales asociadas a la animación: from para el valor al inicio, to para el valor al final de la animación y duration para el establecimiento de la duración en milisegundos.

image

Según comportamiento (Behavioral)

Define la animación por defecto que se ejecuta cuando cambia una propiedad.

No es necesario la propiedad from, ya que recoge el valor actual y el antiguo para realizar la animación.

En el siguiente ejemplo cuando el usuario pulsa clic en el MouseArea cambiamos el width a 50 (originalmente estaba a 100). Automáticamente se lanza la animación retornando el width nuevamente a 100.

image

Manejador de señal (Signal handlers)

Una animación puede crearse asociada a un manejador de una señal.

image

Independientes (Standalone)

Las animaciones también se pueden declarar como cualquier otro objeto QML

image
Se asocian al objeto destino de la animación, para ello utilizamos la propiedad target.

Se utiliza la propiedad properties para establecer que propiedades serán animadas.

La propiedad duration establece la duración en milisegundos

Necesita ser animada explícitamente mediante running o mediante las funciones start() stop()

 

Transiciones de estado (State transitions)

Las transiciones se utilizan para describir las animaciones que se aplicarán cuando se produce un cambio de estado. Para crear una transición, define un objeto de transición y añádelo a la propiedad de un elemento de transición.

image

1.- El objeto PropertyChanges define que cuando el rectángulo se encuentra en el estado “moved”, su posición se debe cambiar a (50, 50).

2.- Cuando alguien pulsa clic sobre el MouseArea se cambia el estado mediante la propiedad state.

3.- Cuando cambia la posición del rectángulo se dispara la transición, y PropertyAnimation animará el rectángulo mediante las propiedades x e y.

La animación solo se aplicará en el momento de cambio de estado.

Observe que no se establece ningún valor para from y to. Para nuestra comodidad, estas propiedades se ajustan automáticamente a los valores de x e y de antes y después del cambio de estado, respectivamente. Aún siendo así, se pueden establecer explícitamente si requiere sobrescribir estos valores.

 

Property Animation Elements

PropertyAnimation es el elemento de animación más básico para la animación de una propiedad. Puede ser utilizado para animar int, real, color, rect, point, size y vector3d. Existen otros tipos de animaciones NumberAnimation, ColorAnimation, RotationAnimation y Vector3DAnimation que heredan de ella:

  • NumberAnimation proporciona una implementación más eficiente para la animación de las propiedades real y int
  • Vector3DAnimation hace lo mismo para las propiedades de Vector3D.
  • ColorAnimation y RotationAnimation proporciona atributos específicos para la animación de los cambios de color y rotación.

image

  • RotationAnimation permite una rotación de la dirección que se determine.

image

Otros a estudiar más adelante:

  • SmoothedAnimation: ofrece cambios suaves en la animación cuando cambia el valor
  • SpringAnimation: proporciona una animación “primaveral” con atributos especializados, tales como la masa, amortiguación y epsilon
  • ParentAnimation: se utiliza para animar un cambio de matriz
  • AnchorAnimation: utilizado para la animación de anclajes

Agrupamiento de animaciones (Animation grouping )

Las animaciones se pueden agrupar para realizar tareas complejas de animación. Para ello disponemos distintas formas de agrupar las animaciones:

  • De forma secuencial mediante SequentialAnimation. Es una lista de animaciones que se ejecutan una detrás de otra.
  • De forma paralela mediante ParallelAnimation. Se ejecutan de forma simultanea.
  • Utilizamos PauseAnimation para introducir retardos en las animaciones.
    Ejemplo de secuencial con pausas.

image

 

También podemos realizar agrupaciones de secuenciales con paralelas.

image

Descargar en formato PDFDescargar en PDF
1 estrella2 estrellas3 estrellas4 estrellas5 estrellas (2 votes, average: 4,50 out of 5)
Loading...

Seguir Jorge Hontoria Jiménez:

Gerente de TipeSoft

Dirección de proyectos de integración de software y aplicaciones orientadas a servicios. Implantación de soluciones de integración basadas en SharePoint Portal.

Últimas publicaciones de

2 Respuestas

  1. ¿Cuando veremos en acción una UI de ejemplo?

    Un saludo

  2. En anteriores post hemos desarrollado un primer ejemplo de UI (un simple formulario)

    http://tipesoft.com/introduccin-a-qml-primer-ejemplo-i/
    http://tipesoft.com/introduccin-a-qml-primer-ejemplo-ii/

    Pronto, en el siguiente post relacionado con el ejemplo, dotaremos a este formulario de dinamismo con lo aprendido en los últimos dos posts.

    Lo cierto es que nos falta mucho que aprender y por eso seguimos con la teoría, tiempo al tiempo…

Dejar una opinión