0% found this document useful (0 votes)
411 views29 pages

QML Animations

The document discusses QML animations including using number, property, color and rotation animations to animate visual changes, controlling animation speed through easing curves, and sequencing or grouping animations sequentially and in parallel using sequential and parallel animations.

Uploaded by

nishantapatil
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
411 views29 pages

QML Animations

The document discusses QML animations including using number, property, color and rotation animations to animate visual changes, controlling animation speed through easing curves, and sequencing or grouping animations sequentially and in parallel using sequential and parallel animations.

Uploaded by

nishantapatil
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

QML Animations

Qt Essentials - Training Course

Produced by Nokia, Qt Development Frameworks


Material based on Qt 4.7, created on January 18, 2011

http://qt.nokia.com

1/29
Module: Animations
Animations
Easing Curves
Animation Groups

Animations 2/29
Objectives
Can apply animations to user interfaces:
• Understanding of basic concepts
• number and property animations
• easing curves
• Ability to queue and group animations
• sequential and parallel animations
• pausing animations
• Knowledge of specialized animations
• color and rotation animations

Animations 3/29
Module: Animations
Animations
Easing Curves
Animation Groups

Animations Animations 4/29


Animations
Animations can be applied to any visible element
• Animations update properties to cause a visual change
• All animations are property animations
• Specialized animation types:
• NumberAnimation for changes to numeric properties
• ColorAnimation for changes to color properties
• RotationAnimation for changes to orientation of items
• Vector3dAnimation for motion in 3D space
• Easing curves are used to create variable speed animations
• Animations are used to create visual effects
See QML Animation Documentation

Animations Animations 5/29


Number Animations
import QtQuick 1.0
Rectangle {
width: 400; height: 400
color: "lightblue"
Rectangle {
y: 150; width: 100; height: 100
color: "green"
NumberAnimation on x {
from: 0; to: 150
duration: 1000
}
}
}
Demo qml-animations/ex-animations/number-animation.qml

Animations Animations 6/29


Number Animations
Number animations change the values of numeric properties
NumberAnimation on x {
from: 0; to: 150
duration: 1000
}

• Applied directly to properties with the on keyword


• The x property is changed by the NumberAnimation
• starts at 0
• ends at 150
• takes 1000 milliseconds
• Can also be defined separately

Animations Animations 7/29


Property Animations
import QtQuick 1.0
Rectangle {
width: 400; height: 400; color: "lightblue"
Rectangle {
id: rectangle1
x: 150; y: 150; color: "green"
}
PropertyAnimation {
target: rectangle1
properties: "width,height"
from: 0; to: 100; duration: 1000
running: true
}
}
Demo qml-animations/ex-animations/property-animation.qml

Animations Animations 8/29


Property Animations
Property animations change named properties of a target
PropertyAnimation {
target: rectangle1
properties: "width,height"
from: 0; to: 100; duration: 1000
running: true
}

• Defined separately to the target element


• Applied to properties of the target
• properties is a comma-separated string list of names
• Often used as part of a Transition
• Not run by default
• set the running property to true

Animations Animations 9/29


Number Animations Revisited
import QtQuick 1.0
Rectangle {
width: 400; height: 400; color: "lightblue"
Rectangle {
id: rect
x: 0; y: 150; width: 100; height: 100
}
NumberAnimation {
target: rect
properties: "x"
from: 0; to: 150; duration: 1000
running: true
}
}
Demo qml-animations/ex-animations/number-animation2.qml

Animations Animations 10/29


Number Animations Revisited
Number animations are just specialized property animations
NumberAnimation {
target: rect
properties: "x"
from: 0; to: 150; duration: 1000
running: true
}

• Animation can be defined separately


• Applied to properties of the target
• properties contains a comma-separated list of property names
• Not run by default
• set the running property to true

Animations Animations 11/29


The Behavior Element
• Behavior allows you to set up an animation whenever a
property changes.

Behavior on x {
SpringAnimation {
spring: 1
damping: 0.2
}
}
Demo qml-animations/ex-animations/spring-animation.qml

Animations Animations 12/29


Module: Animations
Animations
Easing Curves
Animation Groups

Animations Easing Curves 13/29


Easing Curves
import QtQuick 1.0
Rectangle {
width: 400; height: 400
color: "lightblue"
Rectangle {
y: 150; width: 100; height: 100
color: "green"
NumberAnimation on x {
from: 0; to: 150; duration: 1000
easing.type: "OutExpo"
}
}
}
Demo qml-animations/ex-animations/easing-curve.qml

Animations Easing Curves 14/29


Easing Curves
Apply an easing curve to an animation:
NumberAnimation on x {
from: 0; to: 150; duration: 1000
easing.type: "OutExpo"
}

• Sets the easing.type property


• Relates the elapsed time
• to a value interpolated between the from and to values
• using a function for the easing curve
• in this case, the "OutExpo" curve

Animations Easing Curves 15/29


Module: Animations
Animations
Easing Curves
Animation Groups

Animations Animation Groups 16/29


Sequential and Parallel Animations
Animations can be performed sequentially and in parallel
• SequentialAnimation defines a sequence
• with each child animation run in sequence
• For example:
• a rescaling animation, followed by
• an opacity changing animation

• ParallelAnimation defines a parallel group


• with all child animations run at the same time
• For example:
• simultaneous rescaling and opacity changing animations

Sequential and parallel animations can be nested

Animations Animation Groups 17/29


Sequential Animations
Image {
id: rocket
anchors.centerIn: parent
source: "../images/rocket.png"
}
SequentialAnimation {
NumberAnimation {
target: rocket; properties: "scale"
from: 1.0; to: 0.5; duration: 1000
}
NumberAnimation {
target: rocket; properties: "opacity"
from: 1.0; to: 0.0; duration: 1000
}
running: true
}
Demo qml-animations/ex-animations/sequential-animation.qml

Animations Animation Groups 18/29


Sequential Animations
SequentialAnimation {
NumberAnimation {
target: rocket; properties: "scale"
from: 1.0; to: 0.5; duration: 1000
}
NumberAnimation {
target: rocket; properties: "opacity"
from: 1.0; to: 0.0; duration: 1000
}
running: true
}
• Child elements define a two-stage animation:
• first, the rocket is scaled down
• then it fades out
• SequentialAnimation does not itself have a target
• it only groups other animations

Animations Animation Groups 19/29


Pausing between Animations
• PauseAnimation is used to insert a pause between animations
• No target property
• Only a duration property
SequentialAnimation {
NumberAnimation {
target: rocket; properties: "scale"
from: 0.0; to: 1.0; duration: 1000
}
PauseAnimation {
duration: 1000
}
NumberAnimation {
target: rocket; properties: "scale"
from: 1.0; to: 0.0; duration: 1000
}
running: true
}

Animations Animation Groups 20/29


Parallel Animations
Image {
id: rocket
anchors.centerIn: parent
source: "../images/rocket.png"
}
ParallelAnimation {
NumberAnimation {
target: rocket; properties: "scale"
from: 1.0; to: 0.5; duration: 1000
}
NumberAnimation {
target: rocket; properties: "opacity"
from: 1.0; to: 0.0; duration: 1000
}
running: true
}
Demo qml-animations/ex-animations/parallel-animation.qml

Animations Animation Groups 21/29


Parallel Animations
ParallelAnimation {
NumberAnimation {
target: rocket; properties: "scale"
from: 1.0; to: 0.5; duration: 1000
}
NumberAnimation {
target: rocket; properties: "opacity"
from: 1.0; to: 0.0; duration: 1000
}
running: true
}

• Child elements define a combined animation:


• the rocket simultaneously scales down and fades out
• ParallelAnimation does not itself have a target
• it only groups other animations

Animations Animation Groups 22/29


Other Animations
• Other animations
• ColorAnimation for changes to color properties
• RotationAnimation for changes to orientation of items
• Vector3dAnimation for motion in 3D space
• AnchorAnimation animate an anchor change
• ParentAnimation animates changes in parent values.
• SpringAnimation allows a property to track a value in a
spring-like motion

• PropertyAction the PropertyAction element allows immediate


property changes during animation
• ScriptAction allows scripts to be run during an animation

Animations Animation Groups 23/29


Color Animation

• ColorAnimation describes color changes to items


• Component-wise blending of RGBA values
ColorAnimation {
target: rectangle1
property: "color"
from: Qt.rgba(0,0.5,0,1)
to: Qt.rgba(1,1,1,1)
duration: 1000
running: true
}

Animations Animation Groups 24/29


Rotation Animation
• RotationAnimation describes rotation of items
• Easier to use than NumberAnimation for the same purpose
• Applied to the rotation property of an element
• Value of direction property controls rotation:
• RotationAnimation.Clockwise
• RotationAnimation.Counterclockwise
• RotationAnimation.Shortest – the direction of least angle
between from and to values

Animations Animation Groups 25/29


Rotation Animation
Image {
id: ball
source: "../images/ball.png"
anchors.centerIn: parent
smooth: true
RotationAnimation on rotation {
from: 45; to: 315
direction: RotationAnimation.Shortest
duration: 1000
}
}

• 1 second animation
• Counter-clockwise from 45◦ to 315◦
• shortest angle of rotation is via 0◦

Animations Animation Groups 26/29


Vector3d Animation

Not covered at the moment

Animations Animation Groups 27/29


Lab: Bouncing Ball

Starting from the first partial solution:


• Make the ball start from the ground and return to the ground.
• Make the ball travel from left to right
• Add rotation, so the ball completes just over one rotation
• Reorganize the animations using sequential and parallel
animations
• Make the animation start when the ball is clicked
• Add decoration (ground and sky)

Animations Animation Groups 28/29



c 2010 Nokia Corporation and its Subsidiary(-ies).

The enclosed Qt Training Materials are provided under the Creative


Commons Attribution ShareAlike 2.5 License Agreement.

The full license text is available here:


http://creativecommons.org/licenses/by-sa/2.5/legalcode

Nokia, Qt and the Nokia and Qt logos are the registered trademarks of
Nokia Corporation in Finland and other countries worldwide.

Animations Legal 29/29

You might also like