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());