useReanimatedTiming
This hooks allow using custom withTiming and withSpring
functions that are reduce motion aware.
Usage
import {useReanimatedTiming} from 'react-native-ama';
const {withTiming, withSrping} = useReanimatedTiming();
Example
import * as React from 'react';
import {StyleSheet, View} from 'react-native';
import {
ClickableSpan,
Span,
isMotionAnimation,
useAMAContext,
useAnimationDuration,
useReanimatedTiming,
} from 'react-native-ama';
import Animated, {
useAnimatedStyle,
useSharedValue,
} from 'react-native-reanimated';
export const ReanimatedReduceMotionScreen = () => {
const value = useSharedValue(0);
const {withTiming, withSpring} = useReanimatedTiming();
const animatedStyles = useAnimatedStyle(() => {
return {
transform: [{translateX: value.value * 255}],
};
});
const testWithTiming = () => {
value.value = withTiming('translateX', Math.random(), {duration: 300});
};
const testWithSpring = () => {
value.value = withSpring('translateX', Math.random());
};
return (
<View style={styles.view}>
<Span style={styles.intro}>
This example shows how to use the{' '}
<ClickableSpan onPress={() => {
}}>getAnimationDuration</ClickableSpan>{' '}
with Reanimated for a more accessible animations.
</Span>
<Animated.View style={[styles.box, animatedStyles]}/>
<Pressable onPress={testWithTiming}>
<Text>withTiming</Text>
</Pressable>
<Pressable onPress={testWithSpring}>
<Text>withSpring</Text>
</Pressable>
</View>
);
};
const styles = StyleSheet.create({
view: {
paddingHorizontal: theme.padding.big,
},
box: {
width: 100,
height: 100,
borderRadius: 20,
backgroundColor: theme.color.mixed,
},
intro: {
lineHeight: theme.lineHeight.medium,
},
});
withTiming
Under the hood calls the reanimated withTiming function.
If the given propertyKey
is a motion one and reduce motion is enabled, the
force the duration to be 0, before calling withTiming
.
Syntax
withTiming(
propertyKey
:
keyof
ViewStyle,
toValue
:
number,
config
:
WithTimingConfig = {},
callback ? : AnimationCallback
)
;
Property | Description |
---|---|
propertyKey | The animation key that will be used with the useSharedValue |
toValue | The target value parameter passed to the original withTiming |
config | The config parameter passed to the original withTiming |
callback | The callback parameter passed to the original withTiming |
Example
value.value = withTiming('translateX', Math.random(), {duration: 300});
withSpring
Under the hood calls the reanimated withSpring function.
If the given propertyKey
is a motion one and reduce motion is enabled,
then calls withTiming
function with duration 0 instead.
Syntax
withTiming(
propertyKey
:
keyof
ViewStyle,
toValue
:
number,
config ? : WithSpringConfig,
callback ? : AnimationCallback,
)
;
Property | Description |
---|---|
propertyKey | The animation key that will be used with the useSharedValue |
toValue | The target value parameter passed to the original withTiming |
config | The config parameter passed to the original withTiming |
callback | The callback parameter passed to the original withTiming |
Example
value.value = withSpring('translateX', Math.random());