Bird
Raised Fist0
React Nativemobile~5 mins

Spring and decay animations in React Native - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a spring animation in React Native?
A spring animation simulates a spring's movement, creating a natural bounce effect by using tension and friction values.
Click to reveal answer
beginner
What does a decay animation do in React Native?
A decay animation gradually slows down a value over time, simulating friction until it stops.
Click to reveal answer
beginner
Which React Native API is commonly used for spring and decay animations?
The Animated API, especially Animated.spring() for spring animations and Animated.decay() for decay animations.
Click to reveal answer
intermediate
How do you control the speed and bounciness of a spring animation?
By adjusting the 'friction' and 'tension' parameters in Animated.spring(). Lower friction means more bounciness; higher tension means faster movement.
Click to reveal answer
beginner
Why use decay animations in a mobile app?
Decay animations are useful to mimic natural slowing down, like a swipe gesture that slows to a stop, improving user experience.
Click to reveal answer
Which method creates a spring animation in React Native?
AAnimated.spring()
BAnimated.timing()
CAnimated.decay()
DAnimated.loop()
What does the 'friction' parameter affect in a spring animation?
AThe animation's delay
BThe bounciness and how quickly it stops
CThe animation's color
DThe animation's duration
Which animation type simulates slowing down over time until stopping?
ADecay animation
BTiming animation
CSpring animation
DLoop animation
What parameter controls the initial speed in a decay animation?
Adelay
Btension
Cduration
Dvelocity
Which React Native API is best for creating natural-feeling animations?
AAnimated.sequence() only
BAnimated.timing() only
CAnimated.spring() and Animated.decay()
DAnimated.delay() only
Explain how spring animations work in React Native and how you can customize their behavior.
Think about how a real spring moves and what controls its speed and bounce.
You got /3 concepts.
    Describe a scenario where a decay animation improves user experience in a mobile app.
    Imagine sliding a card and it slows down smoothly to stop.
    You got /3 concepts.

      Practice

      (1/5)
      1. What is the main purpose of a spring animation in React Native?
      easy
      A. To create a bouncy and natural movement effect
      B. To instantly change a value without animation
      C. To simulate a slow fade out effect
      D. To repeat an animation infinitely

      Solution

      1. Step 1: Understand spring animation behavior

        Spring animations mimic real-world springs, causing bouncy, natural movements.
      2. Step 2: Compare with other animation types

        Unlike decay or timing animations, spring animations create a bounce effect.
      3. Final Answer:

        To create a bouncy and natural movement effect -> Option A
      4. Quick Check:

        Spring animation = bouncy movement [OK]
      Hint: Spring = bounce and natural movement [OK]
      Common Mistakes:
      • Confusing spring with decay animation
      • Thinking spring is for instant changes
      • Assuming spring repeats infinitely
      2. Which of the following is the correct way to start a spring animation using React Native's Animated API?
      easy
      A. Animated.decay(value, {toValue: 1}).start()
      B. Animated.spring(value, {duration: 1000}).run()
      C. Animated.timing(value, {toValue: 1}).run()
      D. Animated.spring(value, {toValue: 1}).start()

      Solution

      1. Step 1: Identify correct method for spring animation

        The method is Animated.spring with parameters including toValue and then .start() to begin.
      2. Step 2: Check method usage and syntax

        Animated.decay is for decay animations, .run() is not a valid method, and duration is not used in spring.
      3. Final Answer:

        Animated.spring(value, {toValue: 1}).start() -> Option D
      4. Quick Check:

        Use Animated.spring(...).start() for spring animation [OK]
      Hint: Use .start() to begin spring animation [OK]
      Common Mistakes:
      • Using .run() instead of .start()
      • Confusing decay with spring method
      • Adding duration to spring config
      3. What will happen when this code runs?
      const anim = new Animated.Value(0);
      Animated.decay(anim, {velocity: 3, deceleration: 0.997}).start();
      anim.addListener(({value}) => console.log(value));
      medium
      A. The value will increase quickly then slow down gradually
      B. The value will jump instantly to 3 and stop
      C. The value will decrease to zero immediately
      D. The animation will loop forever without stopping

      Solution

      1. Step 1: Understand decay animation behavior

        Decay animation starts with a velocity and slows down gradually due to deceleration.
      2. Step 2: Analyze given parameters

        Velocity 3 means value increases fast initially, deceleration 0.997 slows it down over time.
      3. Final Answer:

        The value will increase quickly then slow down gradually -> Option A
      4. Quick Check:

        Decay animation = fast start + slow stop [OK]
      Hint: Decay = fast start, then slow down [OK]
      Common Mistakes:
      • Thinking decay jumps instantly to velocity
      • Assuming decay decreases value immediately
      • Believing decay loops infinitely
      4. Identify the error in this spring animation code:
      const anim = new Animated.Value(0);
      Animated.spring(anim, {toValue: 1, velocity: 5}).run();
      medium
      A. Missing toValue property in spring config
      B. Using .run() instead of .start() to begin animation
      C. Velocity is not a valid spring config property
      D. Animated.Value should be initialized with 1

      Solution

      1. Step 1: Check method to start animation

        Animated animations use .start() to begin, not .run().
      2. Step 2: Verify spring config properties

        toValue and velocity are valid properties; initial value 0 is fine.
      3. Final Answer:

        Using .run() instead of .start() to begin animation -> Option B
      4. Quick Check:

        Use .start() to run animations [OK]
      Hint: Animations start with .start(), not .run() [OK]
      Common Mistakes:
      • Using .run() instead of .start()
      • Removing toValue from config
      • Initializing Animated.Value incorrectly
      5. You want to create a button that moves right with a spring animation and then slows to stop with a decay animation when released. Which sequence of code correctly achieves this behavior?
      hard
      A. Animated.spring(anim, {toValue: 100, velocity: 2}).start()
      B. Animated.decay(anim, {velocity: 2}).start(() => Animated.spring(anim, {toValue: 100}).start())
      C. Animated.spring(anim, {toValue: 100}).start(() => Animated.decay(anim, {velocity: 2}).start())
      D. Animated.timing(anim, {toValue: 100, duration: 500}).start(() => Animated.decay(anim, {velocity: 2}).start())

      Solution

      1. Step 1: Understand desired animation sequence

        First move right with spring (bouncy), then slow down with decay on release.
      2. Step 2: Analyze options for correct order and methods

        Animated.spring(anim, {toValue: 100}).start(() => Animated.decay(anim, {velocity: 2}).start()) runs spring first, then decay in callback, matching desired sequence.
      3. Step 3: Check other options

        Animated.spring(anim, {toValue: 100, velocity: 2}).start() performs only spring without decay. Animated.decay(anim, {velocity: 2}).start(() => Animated.spring(anim, {toValue: 100}).start()) (Animated.decay(anim, {velocity: 2}).start(() => Animated.spring(anim, {toValue: 100}).start())) reverses order. Animated.timing(anim, {toValue: 100, duration: 500}).start(() => Animated.decay(anim, {velocity: 2}).start()) uses timing instead of spring.
      4. Final Answer:

        Animated.spring(anim, {toValue: 100}).start(() => Animated.decay(anim, {velocity: 2}).start()) -> Option C
      5. Quick Check:

        Spring then decay = move then slow [OK]
      Hint: Run spring first, then decay in callback [OK]
      Common Mistakes:
      • Running decay before spring
      • Performing only spring without decay
      • Using timing instead of spring for bounce
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard