Animación SVG nativa de React

Shubham Vora 15 febrero 2024
  1. Use el módulo Animado de React Native para animar imágenes SVG
  2. Conclusión
Animación SVG nativa de React

En este artículo, los desarrolladores de React Native aprenderán a animar imágenes SVG utilizando diferentes bibliotecas.

Hay muchas posibilidades de que sus usuarios disminuyan si no puede hacer que la UI y la UX de la aplicación sean atractivas. Para hacer una UX atractiva, es necesario agregar animaciones a las imágenes.

Use el módulo Animado de React Native para animar imágenes SVG

El Animado es el módulo de la biblioteca React Native. Podemos usarlo para animar texto, reaccionar componentes e imágenes SVG.

En el siguiente ejemplo, usamos la biblioteca react-native-svg para crear la imagen SVG. Los usuarios pueden ejecutar el siguiente comando en el directorio del proyecto para instalar la biblioteca react-native-svg.

npm i react-native-svg

Primero, crearemos la imagen SVG usando la biblioteca react-native-svg. Aquí, los usuarios pueden ver que importamos el módulo Círculo de la biblioteca react-native-svg y pasamos los accesorios para el tamaño y la posición del círculo de acuerdo con nuestros requisitos.

<Svg height="100" width="100">
    <Circle cx="50" cy="50" r="50" stroke="red" strokeWidth="3.5" fill="yellow" />
</Svg>

Después de eso, necesitamos agregar las imágenes o textos dentro del componente Animated.View, que necesitamos animar. También podemos agregar los estilos como accesorios en el componente Animated.View, que contiene la opacidad; cambiando la opacidad, podemos animar nuestro círculo.

Los usuarios pueden seguir la siguiente sintaxis para agregar el estilo y HTML dentro del componente Animated.View.

<Animated.View
    style={[
    {
       opacity: opacity,
    },
    ]}
    >
   {/* add text or images to animate here */}
</Animated.View>

Como paso final, los usuarios deben cambiar la opacidad de la imagen para animarla.

En el siguiente ejemplo, hemos creado el componente Animated.View y hemos agregado la imagen SVG del círculo dentro de eso. Además, agregó la opacidad dentro del estilo.

En el siguiente código, hay dos botones para cambiar la opacidad del círculo. Cuando el usuario presiona el botón con el texto Fade In, llamará a la función animateFadeIn(), que establece la duración de la animación y el nuevo valor de opacidad en 1 para Animated.

De manera similar, cuando el usuario presiona el botón con el texto Fade Out, llamará a la función animateFadeOut(), que establece la duración de la animación y el nuevo valor de la opacidad en 0.

Código de ejemplo:

import React, { useRef } from "react";
import {
  Animated,
  Text,
  View,
  StyleSheet,
  Button,
  SafeAreaView,
} from "react-native";
import { Svg, Circle } from "react-native-svg";
export default function App() {
  // animate the circle using the opacity, and the initial value of the opacity is zero
  const opacity = useRef(new Animated.Value(0)).current;
  const animateFadeIn = () => {
    //     // make opacity 0 to ` in 3000 milliseconds
    Animated.timing(opacity, {
      toValue: 1,
      duration: 3000,
    }).start();
  };
  const animateFadeOut = () => {
    // make opacity 1 to 0 in 3000 milliseconds
    Animated.timing(opacity, {
      toValue: 0,
      duration: 3000,
    }).start();
  };

  return (
    <SafeAreaView style={styles.container}>
      <Animated.View
        style={[
          {
            // opacity value for the animation
            opacity: opacity,
          },
        ]}
      >
        {/*  SVG image of circle */}
        <Svg height="100" width="100">
          <Circle
            cx="50"
            cy="50"
            r="50"
            stroke="red"
            strokeWidth="3.5"
            fill="yellow"
          />
        </Svg>
      </Animated.View>
      <View style={{ display: "flex", flexDirection: "column" }}>
        <Button
          style={{ marginVertical: 16 }}
          title="Fade In View"
          onPress={animateFadeIn}
        />
        <Button
          style={{ marginVertical: 16 }}
          title="Fade Out View"
          onPress={animateFadeOut}
        />
      </View>
    </SafeAreaView>
  );
}
const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: "center",
    justifyContent: "center",
  },
});

Producción:

reaccionar animación svg nativa

En el resultado anterior, los usuarios pueden ver que cuando el usuario presiona el botón Fade In, aparece un círculo, y cuando presiona el botón Fade Out, el círculo desaparece.

Conclusión

En este artículo, aprendimos a animar las imágenes SVG en React-native. Además, los usuarios pueden usar la biblioteca externa, que admite animación React-native y SVG, para animar las imágenes SVG.

Shubham Vora avatar Shubham Vora avatar

Shubham is a software developer interested in learning and writing about various technologies. He loves to help people by sharing vast knowledge about modern technologies via different platforms such as the DelftStack.com website.

LinkedIn GitHub

Artículo relacionado - React Native