Inicio > Algo nuevo por descubrir > Gestión dinámica de componentes QML – II

Gestión dinámica de componentes QML – II

Lunes, 7 de marzo de 2011

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 thumb2 Gestión dinámica de componentes QML – II

 
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 thumb3 Gestión dinámica de componentes QML – II

 
 
Manejador de señal (Signal handlers)

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

image thumb4 Gestión dinámica de componentes QML – II

 
Independientes (Standalone)

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

image thumb5 Gestión dinámica de componentes QML – II
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 thumb6 Gestión dinámica de componentes QML – II

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 thumb7 Gestión dinámica de componentes QML – II

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

image thumb8 Gestión dinámica de componentes QML – II

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 thumb9 Gestión dinámica de componentes QML – II

 

También podemos realizar agrupaciones de secuenciales con paralelas.

image thumb10 Gestión dinámica de componentes QML – II

Algo nuevo por descubrir , ,

Imprimelo! Imprimelo! | Imprimelo! Guardalo como PDF!

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

  1. avatar
    MyAvatar
    Lunes, 7 de marzo de 2011 a las 15:04 | #1

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

    Un saludo

  2. Lunes, 7 de marzo de 2011 a las 15:39 | #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…

  1. Sin trackbacks aún.