Animated
Animations are an important part of modern UX, and the Animated library is designed to make them fluid, powerful, and easy to build and maintain.
Animated
Animations are an important part of modern UX, and the Animated library is designed to make them fluid, powerful, and possible to build and maintain.
The simplest workflow is to create an Animated.Value, hook it up to one or more style attributes of an animated component, and then drive updates either via animations, such as Animated.timing, or by hooking into gestures like panning or scolling via Animated.event. Animated.Value can also bind to props other than style, and can be interpolated as well. Here is a basic example of a container view that will fade in when it's mounted:
class FadeInView extends React.Component {
constructor(props) {
@@ -96,12 +96,12 @@
}
}
-Note that only animatable components can be animated. View, Text, and Image are already provided, and you can create custom ones with createAnimatedComponent. These special components do the magic of binding the animated values to the properties, and do targetted native updates to avoid the cost of the react render and reconciliation process on every frame. They also handle cleanup on unmount so they are safe by default.
Note that only animatable components can be animated. View, Text, and Image are already provided, and you can create custom ones with createAnimatedComponent. These particular components do the magic of binding the animated values to the properties, and do targetted native updates to avoid the cost of the react render and reconciliation process on every frame. They also handle cleanup on unmount so they are safe by default.
Animations are heavily configurable. Custom and pre-defined easing functions, delays, durations, decay factors, spring constants, and more can all be tweaked depending on the type of animation.
A single Animated.Value can drive any number of properties, and each property can be run through an interpolation first. An interpolation maps input ranges to output ranges, typically using a linear interpolation but also supports easing functions. By default, it will extrapolate the curve beyond the ranges given, but you can also have it clamp the output value.
For example, you may want to think about your Animated.Value as going from 0 to 1, but animate the position from 150px to 0px and the opacity from 0 to
-
-
- This can easily be done by modifying
stylein the example above like so:
+ - This could be done by modifying
stylein the example above like so:
style={{
opacity: this.state.fadeAnim, // Binds directly
@@ -113,7 +113,7 @@
}],
}}>
-Animations can also be combined in complex ways using composition functions such as sequence and parallel, and can also be chained together simply by setting the toValue of one animation to be another Animated.Value.
Animations can also be combined in complex ways using composition functions such as sequence and parallel, and can also be chained together by setting the toValue of one animation to be another Animated.Value.
Animated.ValueXY is handy for 2D animations, like panning, and there are other helpful additions like setOffset and getLayout to aid with typical interaction patterns, like drag-and-drop.
You can see more example usage in AnimationExample.js, the Gratuitous Animation App, and Animations documentation guide.
Note that Animated is designed to be fully serializable so that animations can be run in a high performace way, independent of the normal JavaScript event loop. This does influence the API, so keep that in mind when it seems a little trickier to do something compared to a fully synchronous system. Checkout Animated.Value.addListener as a way to work around some of these limitations, but use it sparingly since it might have performance implications in the future.
Animated
Animations are an important part of modern UX, and the Animated library is designed to make them fluid, powerful, and easy to build and maintain.
Animated
Animations are an important part of modern UX, and the Animated library is designed to make them fluid, powerful, and possible to build and maintain.
The simplest workflow is to create an Animated.Value, hook it up to one or more style attributes of an animated component, and then drive updates either via animations, such as Animated.timing, or by hooking into gestures like panning or scolling via Animated.event. Animated.Value can also bind to props other than style, and can be interpolated as well. Here is a basic example of a container view that will fade in when it's mounted:
class FadeInView extends React.Component {
constructor(props) {
@@ -96,12 +96,12 @@
}
}
-Note that only animatable components can be animated. View, Text, and Image are already provided, and you can create custom ones with createAnimatedComponent. These special components do the magic of binding the animated values to the properties, and do targetted native updates to avoid the cost of the react render and reconciliation process on every frame. They also handle cleanup on unmount so they are safe by default.
Note that only animatable components can be animated. View, Text, and Image are already provided, and you can create custom ones with createAnimatedComponent. These particular components do the magic of binding the animated values to the properties, and do targetted native updates to avoid the cost of the react render and reconciliation process on every frame. They also handle cleanup on unmount so they are safe by default.
Animations are heavily configurable. Custom and pre-defined easing functions, delays, durations, decay factors, spring constants, and more can all be tweaked depending on the type of animation.
A single Animated.Value can drive any number of properties, and each property can be run through an interpolation first. An interpolation maps input ranges to output ranges, typically using a linear interpolation but also supports easing functions. By default, it will extrapolate the curve beyond the ranges given, but you can also have it clamp the output value.
For example, you may want to think about your Animated.Value as going from 0 to 1, but animate the position from 150px to 0px and the opacity from 0 to
-
-
- This can easily be done by modifying
stylein the example above like so:
+ - This could be done by modifying
stylein the example above like so:
style={{
opacity: this.state.fadeAnim, // Binds directly
@@ -113,7 +113,7 @@
}],
}}>
-Animations can also be combined in complex ways using composition functions such as sequence and parallel, and can also be chained together simply by setting the toValue of one animation to be another Animated.Value.
Animations can also be combined in complex ways using composition functions such as sequence and parallel, and can also be chained together by setting the toValue of one animation to be another Animated.Value.
Animated.ValueXY is handy for 2D animations, like panning, and there are other helpful additions like setOffset and getLayout to aid with typical interaction patterns, like drag-and-drop.
You can see more example usage in AnimationExample.js, the Gratuitous Animation App, and Animations documentation guide.
Note that Animated is designed to be fully serializable so that animations can be run in a high performace way, independent of the normal JavaScript event loop. This does influence the API, so keep that in mind when it seems a little trickier to do something compared to a fully synchronous system. Checkout Animated.Value.addListener as a way to work around some of these limitations, but use it sparingly since it might have performance implications in the future.
ScrollView
Component that wraps platform ScrollView while providing integration with touch locking "responder" system.
-Keep in mind that ScrollViews must have a bounded height in order to work, since they contain unbounded-height children into a bounded container (via a scroll interaction). In order to bound the height of a ScrollView, either set the height of the view directly (discouraged) or make sure all parent views have bounded height. Forgetting to transfer {flex: 1} down the view stack can lead to errors here, which the element inspector makes easy to debug.
Keep in mind that ScrollViews must have a bounded height in order to work, since they contain unbounded-height children into a bounded container (via a scroll interaction). In order to bound the height of a ScrollView, either set the height of the view directly (discouraged) or make sure all parent views have bounded height. Forgetting to transfer {flex: 1} down the view stack can lead to errors here, which the element inspector helps to debug.
Doesn't yet support other contained responders from blocking this scroll view from becoming the responder.
Props
-
diff --git a/docs/0.16/scrollview/index.html b/docs/0.16/scrollview/index.html
index 38e6a7a9f6c..f415605f9ed 100644
--- a/docs/0.16/scrollview/index.html
+++ b/docs/0.16/scrollview/index.html
@@ -69,7 +69,7 @@
}
});
ScrollView
Component that wraps platform ScrollView while providing integration with touch locking "responder" system.
-Keep in mind that ScrollViews must have a bounded height in order to work, since they contain unbounded-height children into a bounded container (via a scroll interaction). In order to bound the height of a ScrollView, either set the height of the view directly (discouraged) or make sure all parent views have bounded height. Forgetting to transfer {flex: 1} down the view stack can lead to errors here, which the element inspector makes easy to debug.
Keep in mind that ScrollViews must have a bounded height in order to work, since they contain unbounded-height children into a bounded container (via a scroll interaction). In order to bound the height of a ScrollView, either set the height of the view directly (discouraged) or make sure all parent views have bounded height. Forgetting to transfer {flex: 1} down the view stack can lead to errors here, which the element inspector helps to debug.
Doesn't yet support other contained responders from blocking this scroll view from becoming the responder.
Props
-
diff --git a/docs/0.16/textinput.html b/docs/0.16/textinput.html
index d146b5c380c..ea3a948eb5b 100644
--- a/docs/0.16/textinput.html
+++ b/docs/0.16/textinput.html
@@ -69,7 +69,7 @@
}
});
TextInput
A foundational component for inputting text into the app via a keyboard. Props provide configurability for several features, such as auto-correction, auto-capitalization, placeholder text, and different keyboard types, such as a numeric keypad.
-The simplest use case is to plop down a TextInput and subscribe to the onChangeText events to read the user input. There are also other events, such as onSubmitEditing and onFocus that can be subscribed to. A simple example:
The simplest use case is to plop down a TextInput and subscribe to the onChangeText events to read the user input. There are also other events, such as onSubmitEditing and onFocus that can be subscribed to. For example:
<TextInput
style={{height: 40, borderColor: 'gray', borderWidth: 1}}
onChangeText={(text) => this.setState({text})}
@@ -175,7 +175,7 @@
defaultValue
-Provides an initial value that will change when the user starts typing. Useful for simple use-cases where you don't want to deal with listening to events and updating the value prop to keep the controlled state in sync.
+Provides an initial value that will change when the user starts typing. Useful for use-cases where you don't want to deal with listening to events and updating the value prop to keep the controlled state in sync.
Type Required
@@ -368,7 +368,7 @@
value
-The value to show for the text input. TextInput is a controlled component, which means the native value will be forced to match this value prop if provided. For most uses this works great, but in some cases this may cause flickering - one common cause is preventing edits by keeping value the same. In addition to simply setting the same value, either set editable={false}, or set/update maxLength to prevent unwanted edits without flicker.
+The value to show for the text input. TextInput is a controlled component, which means the native value will be forced to match this value prop if provided. For most uses this works great, but in some cases this may cause flickering - one common cause is preventing edits by keeping value the same. In addition to setting the same value, either set editable={false}, or set/update maxLength to prevent unwanted edits without flicker.
Type Required
diff --git a/docs/0.16/textinput/index.html b/docs/0.16/textinput/index.html
index d146b5c380c..ea3a948eb5b 100644
--- a/docs/0.16/textinput/index.html
+++ b/docs/0.16/textinput/index.html
@@ -69,7 +69,7 @@
}
});
EditTextInput
A foundational component for inputting text into the app via a keyboard. Props provide configurability for several features, such as auto-correction, auto-capitalization, placeholder text, and different keyboard types, such as a numeric keypad.
-The simplest use case is to plop down a TextInput and subscribe to the onChangeText events to read the user input. There are also other events, such as onSubmitEditing and onFocus that can be subscribed to. A simple example:
+The simplest use case is to plop down a TextInput and subscribe to the onChangeText events to read the user input. There are also other events, such as onSubmitEditing and onFocus that can be subscribed to. For example:
<TextInput
style={{height: 40, borderColor: 'gray', borderWidth: 1}}
onChangeText={(text) => this.setState({text})}
@@ -175,7 +175,7 @@
defaultValue
-Provides an initial value that will change when the user starts typing. Useful for simple use-cases where you don't want to deal with listening to events and updating the value prop to keep the controlled state in sync.
+Provides an initial value that will change when the user starts typing. Useful for use-cases where you don't want to deal with listening to events and updating the value prop to keep the controlled state in sync.
Type Required
@@ -368,7 +368,7 @@
value
-The value to show for the text input. TextInput is a controlled component, which means the native value will be forced to match this value prop if provided. For most uses this works great, but in some cases this may cause flickering - one common cause is preventing edits by keeping value the same. In addition to simply setting the same value, either set editable={false}, or set/update maxLength to prevent unwanted edits without flicker.
+The value to show for the text input. TextInput is a controlled component, which means the native value will be forced to match this value prop if provided. For most uses this works great, but in some cases this may cause flickering - one common cause is preventing edits by keeping value the same. In addition to setting the same value, either set editable={false}, or set/update maxLength to prevent unwanted edits without flicker.
Type Required
diff --git a/docs/0.17/animated.html b/docs/0.17/animated.html
index 8ee4b422e70..e81d7c082bf 100644
--- a/docs/0.17/animated.html
+++ b/docs/0.17/animated.html
@@ -1,4 +1,4 @@
-Animated · React Native EditAnimated
Animations are an important part of modern UX, and the Animated library is designed to make them fluid, powerful, and easy to build and maintain.
+ EditAnimated
Animations are an important part of modern UX, and the Animated library is designed to make them fluid, powerful, and possible to build and maintain.
The simplest workflow is to create an Animated.Value, hook it up to one or more style attributes of an animated component, and then drive updates either via animations, such as Animated.timing, or by hooking into gestures like panning or scolling via Animated.event. Animated.Value can also bind to props other than style, and can be interpolated as well. Here is a basic example of a container view that will fade in when it's mounted:
class FadeInView extends React.Component {
constructor(props) {
@@ -96,12 +96,12 @@
}
}
-Note that only animatable components can be animated. View, Text, and Image are already provided, and you can create custom ones with createAnimatedComponent. These special components do the magic of binding the animated values to the properties, and do targetted native updates to avoid the cost of the react render and reconciliation process on every frame. They also handle cleanup on unmount so they are safe by default.
+Note that only animatable components can be animated. View, Text, and Image are already provided, and you can create custom ones with createAnimatedComponent. These particular components do the magic of binding the animated values to the properties, and do targetted native updates to avoid the cost of the react render and reconciliation process on every frame. They also handle cleanup on unmount so they are safe by default.
Animations are heavily configurable. Custom and pre-defined easing functions, delays, durations, decay factors, spring constants, and more can all be tweaked depending on the type of animation.
A single Animated.Value can drive any number of properties, and each property can be run through an interpolation first. An interpolation maps input ranges to output ranges, typically using a linear interpolation but also supports easing functions. By default, it will extrapolate the curve beyond the ranges given, but you can also have it clamp the output value.
For example, you may want to think about your Animated.Value as going from 0 to 1, but animate the position from 150px to 0px and the opacity from 0 to
-- This can easily be done by modifying
style in the example above like so:
+- This could be done by modifying
style in the example above like so:
style={{
opacity: this.state.fadeAnim, // Binds directly
@@ -113,7 +113,7 @@
}],
}}>
-Animations can also be combined in complex ways using composition functions such as sequence and parallel, and can also be chained together simply by setting the toValue of one animation to be another Animated.Value.
+Animations can also be combined in complex ways using composition functions such as sequence and parallel, and can also be chained together by setting the toValue of one animation to be another Animated.Value.
Animated.ValueXY is handy for 2D animations, like panning, and there are other helpful additions like setOffset and getLayout to aid with typical interaction patterns, like drag-and-drop.
You can see more example usage in AnimationExample.js, the Gratuitous Animation App, and Animations documentation guide.
Note that Animated is designed to be fully serializable so that animations can be run in a high performace way, independent of the normal JavaScript event loop. This does influence the API, so keep that in mind when it seems a little trickier to do something compared to a fully synchronous system. Checkout Animated.Value.addListener as a way to work around some of these limitations, but use it sparingly since it might have performance implications in the future.
diff --git a/docs/0.17/animated/index.html b/docs/0.17/animated/index.html
index 8ee4b422e70..e81d7c082bf 100644
--- a/docs/0.17/animated/index.html
+++ b/docs/0.17/animated/index.html
@@ -1,4 +1,4 @@
-Animated · React Native EditAnimated
Animations are an important part of modern UX, and the Animated library is designed to make them fluid, powerful, and easy to build and maintain.
+ EditAnimated
Animations are an important part of modern UX, and the Animated library is designed to make them fluid, powerful, and possible to build and maintain.
The simplest workflow is to create an Animated.Value, hook it up to one or more style attributes of an animated component, and then drive updates either via animations, such as Animated.timing, or by hooking into gestures like panning or scolling via Animated.event. Animated.Value can also bind to props other than style, and can be interpolated as well. Here is a basic example of a container view that will fade in when it's mounted:
class FadeInView extends React.Component {
constructor(props) {
@@ -96,12 +96,12 @@
}
}
-Note that only animatable components can be animated. View, Text, and Image are already provided, and you can create custom ones with createAnimatedComponent. These special components do the magic of binding the animated values to the properties, and do targetted native updates to avoid the cost of the react render and reconciliation process on every frame. They also handle cleanup on unmount so they are safe by default.
+Note that only animatable components can be animated. View, Text, and Image are already provided, and you can create custom ones with createAnimatedComponent. These particular components do the magic of binding the animated values to the properties, and do targetted native updates to avoid the cost of the react render and reconciliation process on every frame. They also handle cleanup on unmount so they are safe by default.
Animations are heavily configurable. Custom and pre-defined easing functions, delays, durations, decay factors, spring constants, and more can all be tweaked depending on the type of animation.
A single Animated.Value can drive any number of properties, and each property can be run through an interpolation first. An interpolation maps input ranges to output ranges, typically using a linear interpolation but also supports easing functions. By default, it will extrapolate the curve beyond the ranges given, but you can also have it clamp the output value.
For example, you may want to think about your Animated.Value as going from 0 to 1, but animate the position from 150px to 0px and the opacity from 0 to
-- This can easily be done by modifying
style in the example above like so:
+- This could be done by modifying
style in the example above like so:
style={{
opacity: this.state.fadeAnim, // Binds directly
@@ -113,7 +113,7 @@
}],
}}>
-Animations can also be combined in complex ways using composition functions such as sequence and parallel, and can also be chained together simply by setting the toValue of one animation to be another Animated.Value.
+Animations can also be combined in complex ways using composition functions such as sequence and parallel, and can also be chained together by setting the toValue of one animation to be another Animated.Value.
Animated.ValueXY is handy for 2D animations, like panning, and there are other helpful additions like setOffset and getLayout to aid with typical interaction patterns, like drag-and-drop.
You can see more example usage in AnimationExample.js, the Gratuitous Animation App, and Animations documentation guide.
Note that Animated is designed to be fully serializable so that animations can be run in a high performace way, independent of the normal JavaScript event loop. This does influence the API, so keep that in mind when it seems a little trickier to do something compared to a fully synchronous system. Checkout Animated.Value.addListener as a way to work around some of these limitations, but use it sparingly since it might have performance implications in the future.