Animar gráficos vetoriais escaláveis (SVGs) no React Native fornece uma maneira poderosa de criar interfaces de usuário envolventes e com alto desempenho. Ao contrário de imagens raster, os SVGs mantêm sua nitidez em qualquer escala, tornando-os ideais para animações que não ficarão borradas ou pixeladas. Este guia demonstra como aproveitar a API `Animated` do React Native para animar facilmente seus SVGs.
Sumário
- Animando SVGs com a API Animated do React Native
- Animando Diferentes Atributos SVG
- Técnicas de Animação Avançadas
- Conclusão
Animando SVGs com a API Animated do React Native
A API `Animated` do React Native oferece uma solução flexível e eficiente para criar animações. Ela funciona manipulando valores “animáveis” que controlam as propriedades de seus componentes SVG. Vamos começar configurando seu projeto.
Primeiro, instale o pacote necessário:
expo install react-native-svg
ou usando yarn:
yarn add react-native-svg
Agora, vamos criar uma animação simples de um quadrado girando:
import React, { useRef, useEffect } from 'react';
import { Animated, StyleSheet } from 'react-native';
import Svg, { Rect } from 'react-native-svg';
const AnimatedSquare = () => {
const spinValue = useRef(new Animated.Value(0)).current;
useEffect(() => {
Animated.loop(
Animated.timing(spinValue, {
toValue: 1,
duration: 2000,
useNativeDriver: true,
})
).start();
}, [spinValue]);
const spin = spinValue.interpolate({
inputRange: [0, 1],
outputRange: ['0deg', '360deg'],
});
return (
);
};
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
},
});
export default AnimatedSquare;
Este código cria um quadrado vermelho que gira continuamente. O sinalizador `useNativeDriver: true` é crucial para o desempenho, transferindo a animação para a thread nativa.
Animando Diferentes Atributos SVG
Você pode animar vários atributos SVG além da rotação. Por exemplo, vamos animar a cor de preenchimento do quadrado:
import React, { useRef, useEffect } from 'react';
import { Animated, StyleSheet } from 'react-native';
import Svg, { Rect } from 'react-native-svg';
const AnimatedSquare = () => {
const colorValue = useRef(new Animated.Value(0)).current;
useEffect(() => {
Animated.loop(
Animated.timing(colorValue, {
toValue: 1,
duration: 2000,
useNativeDriver: true,
})
).start();
}, [colorValue]);
const fillColor = colorValue.interpolate({
inputRange: [0, 1],
outputRange: ['red', 'blue'],
});
return (
);
};
// ... styles remain the same
Este código faz uma transição suave na cor de preenchimento do quadrado entre vermelho e azul.
Técnicas de Animação Avançadas
Explore animações mais complexas usando `Animated.spring`, `Animated.decay` e outros tipos de animação dentro da API `Animated`. Combine várias animações para efeitos intrincados. Experimente funções de easing para ajustar a suavidade e o tempo da animação.
Conclusão
Animar SVGs no React Native com a API `Animated` é um método simples, porém poderoso, para melhorar o apelo visual do seu aplicativo. Lembre-se de usar `useNativeDriver: true` para desempenho otimizado. Ao experimentar diferentes tipos de animação e atributos SVG, você pode criar uma ampla gama de animações visualmente envolventes e com alto desempenho.