Animated timing allows for us to define an animation that takes a certain amount of time. It's most commonly used if you need to animate to a specific value over a set amount of time.
For Example:
this._animatedValue = new Animated.Value(0); Animated.timing(this._animatedValue, { toValue: 100, duration: 500, }).start();
This will animate our _animatedValue from 0 to 100 over the course of 500 milliseconds.
The Animated.timing config also takes 2 additional parameters, easing, and delay. The delay is most self explanatory, it will wait a number of milliseconds before triggering the animation:
this._animatedValue = new Animated.Value(0); Animated.timing(this._animatedValue, { toValue: 100, delay: 300, duration: 500, }).start();
This animation will wait 300 milliseconds before triggering and then take 500 milliseconds to animate from 0 to 100. The total time of animation will be 800 milliseconds.
The easing parameter defaults to easeInOut, which isn't actually an option but is created like so: var easeInOut = Easing.inOut(Easing.ease);.
To get access to a bunch of pre-defined easing functions, you can require the Easing module from React:
import { Easing } from "react-native";
You can look at some of the provided easings here: https://github.com/facebook/react-native/blob/master/Libraries/Animated/src/Easing.js.
Some of these are functions that take functions that return functions, like the easeInOut above:
import { Easing } from "react-native"; this._animatedValue = new Animated.Value(0); Animated.timing(this._animatedValue, { toValue: 100, easing: Easing.linear, duration: 500, }).start(); Animated.timing(this._animatedValue, { toValue: 100, easing: Easing.elastic(2), // Springy duration: 500, }).start(); Animated.timing(this._animatedValue, { toValue: 100, easing: Easing.bounce, // Like a ball duration: 500, }).start();
Additionally, if you do not like one of the provided easings, you can write your own as it is a function that is provided a number, and that returns a new number.
Many more examples can be found here in the AnimatedExample of the UIExplorer https://github.com/facebook/react-native/blob/master/Examples/UIExplorer/AnimatedExample.js.