Reagieren Sie native SVG-Animation

Shubham Vora 15 Februar 2024
  1. Verwenden Sie das Animated-Modul von React Native, um SVG-Bilder zu animieren
  2. Abschluss
Reagieren Sie native SVG-Animation

In diesem Artikel lernen React Native-Entwickler, SVG-Bilder mit verschiedenen Bibliotheken zu animieren.

Es besteht eine große Chance, dass Ihre Benutzer zurückgehen, wenn Sie die UI und UX der App nicht attraktiv gestalten können. Um eine attraktive UX zu erstellen, ist das Hinzufügen von Animationen zu Bildern erforderlich.

Verwenden Sie das Animated-Modul von React Native, um SVG-Bilder zu animieren

Das Animated ist das Modul der React Native Library. Wir können es verwenden, um Text zu animieren, Komponenten und SVG-Bilder zu reagieren.

Im folgenden Beispiel verwenden wir die Bibliothek react-native-svg, um das SVG-Bild zu erstellen. Benutzer können den folgenden Befehl im Projektverzeichnis ausführen, um die Bibliothek react-native-svg zu installieren.

npm i react-native-svg

Zuerst erstellen wir das SVG-Bild mit der Bibliothek react-native-svg. Hier sehen die Nutzer, dass wir das Modul Circle aus der Bibliothek react-native-svg importiert und die Requisiten für die Kreisgrösse und -position gemäss unseren Anforderungen übergeben haben.

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

Danach müssen wir die Bilder oder Texte in die Komponente Animated.View einfügen, die wir animieren müssen. Wir können die Stile auch als Requisiten in der Komponente Animated.View hinzufügen, die die Opazität enthält; Indem wir die Deckkraft ändern, können wir unseren Kreis animieren.

Benutzer können der folgenden Syntax folgen, um den Stil und den HTML-Code in die Komponente Animated.View einzufügen.

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

Als letzten Schritt müssen Benutzer die Deckkraft des Bildes ändern, um es zu animieren.

Im folgenden Beispiel haben wir die Komponente Animated.View erstellt und darin das SVG-Bild des Kreises eingefügt. Außerdem wurde die Opazität innerhalb des Stils hinzugefügt.

Im folgenden Code gibt es zwei Schaltflächen zum Ändern der Deckkraft des Kreises. Wenn der Benutzer die Schaltfläche mit dem Text Fade In drückt, wird die Funktion animateFadeIn() aufgerufen, die die Animationsdauer und den neuen Wert für die Deckkraft für Animated auf 1 setzt.

Wenn der Benutzer die Schaltfläche mit dem Text Fade Out drückt, wird die Funktion animateFadeOut() aufgerufen, die die Animationsdauer und den neuen Wert für die Deckkraft auf 0 setzt.

Beispielcode:

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",
  },
});

Ausgang:

Reagieren Sie auf native SVG-Animation

In der obigen Ausgabe können Benutzer sehen, dass ein Kreis erscheint, wenn der Benutzer auf die Schaltfläche Fade In drückt, und wenn er auf die Schaltfläche Fade Out drückt, verschwindet der Kreis.

Abschluss

In diesem Artikel haben wir gelernt, die SVG-Bilder in React-native zu animieren. Darüber hinaus können Benutzer die externe Bibliothek verwenden, die React-native und SVG-Animation unterstützt, um die SVG-Bilder zu animieren.

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

Verwandter Artikel - React Native