์ฑ์ ์ฌ์ฉ์ ๊ฒฝํ์์ ์ ๋๋ฉ์ด์
์ ๊ฐ์ฑ์ด๋ค.
๋ฒํผ์ ๋๋ฅด๊ณ , ํ๋ฉด์ด ์ ํ๋๊ณ , ๋ก๋ฉ ์คํผ๋๊ฐ ๋์๊ฐ๋ ๋ชจ๋ ์๊ฐ์ด
์ ์ ์๊ฒ โ์ด ์ฑ ๋ถ๋๋ฝ๊ณ ์ ๊ตํ๋ค?โ๋ผ๋ ์ธ์์ ์ค ์ ์๋ค.
์ด๋ฒ ๊ธ์ React Native์์ ์ฌ์ฉํ ์ ์๋ ์ฃผ์ ์ ๋๋ฉ์ด์
๋๊ตฌ๋ค์ ์ ๋ฆฌํ๊ณ
์ด๋ค ์ํฉ์ ์ด๋ค ๋ฐฉ์์ด ์ ํฉํ์ง ์ ๋ฆฌํ ๊ธ์ด๋ค.
React Native์์ ๊ธฐ๋ณธ ์ ๊ณตํ๋ ์ ๋๋ฉ์ด์ ์์คํ
const fadeAnim = useRef(new Animated.Value(0)).current;
useEffect(() => {
Animated.timing(fadeAnim, {
toValue: 1,
duration: 500,
useNativeDriver: true,
}).start();
}, []);
return (
<Animated.View style={{ opacity: fadeAnim }}>
<Text>์ ๋๋ฉ์ด์
์ปดํฌ๋ํธ</Text>
</Animated.View>
);
โ
๊ฐ๋จํ ์ ๋๋ฉ์ด์
์ ์ ํฉ
โ
useNativeDriver: true
๋ก GPU ๊ธฐ๋ฐ ์ฑ๋ฅ ํ๋ณด ๊ฐ๋ฅ
โ ๋ณต์กํ ์ฐ์ฐ, ์ ์ค์ฒ์์ ์ฐ๋์๋ ํ๊ณ
์ฑ๋ฅ์ด ์ค์ํ๊ฑฐ๋, ์ ์ค์ฒ/์คํฌ๋กค ์ฐ๋์ด ํ์ํ ๋ ์ ํ
npm install react-native-reanimated
useSharedValue
, withTiming
, useAnimatedStyle
๋ฑ์ ์ฌ์ฉconst offset = useSharedValue(0);
const animatedStyles = useAnimatedStyle(() => ({
transform: [{ translateY: offset.value }],
}));
return (
<Animated.View style={animatedStyles} />
);
โ
์ฑ๋ฅ ์ต๊ณ
โ
์ ์ค์ฒ ํธ๋ค๋ง, ์คํฌ๋กค ์ฐ๋์ ๊ฐํจ
โ ๋ฌ๋ ์ปค๋ธ ์์, ์ค์น ๋ณต์ก
๋์์ด๋๊ฐ ๋ง๋ JSON ์ ๋๋ฉ์ด์ ํ์ผ์ ๊ทธ๋๋ก ์ฑ์์ ์ฌ์
npm install lottie-react-native
import LottieView from 'lottie-react-native';
<LottieView
source={require('./animation.json')}
autoPlay
loop
/>
โ
๊ณ ํ๋ฆฌํฐ ์ผ๋ฌ์คํธ ์ ๋๋ฉ์ด์
๊ตฌํ
โ
๋ก๋ฉ ์ธ๋์ผ์ดํฐ, ์ฑ๊ณต ์ ๋๋ฉ์ด์
๋ฑ์ ์ ๋ฆฌ
โ ์ฌ์ฉ์ ์ธํฐ๋์
๊ณผ๋ ๋ค์ ๋ถ๋ฆฌ๋จ (๋๊ธฐํ ์ด๋ ต)
๋ชฉ์ | ์ถ์ฒ ๋๊ตฌ |
---|---|
๋ฒํผ ๋๋ฅผ ๋ ํจ๊ณผ | Animated |
์ ์ค์ฒ ๊ธฐ๋ฐ ์ฌ๋ผ์ด๋ | Reanimated |
์คํฌ๋กค ๋ฐ๋ผ ์์ง์ด๋ ์ปดํฌ๋ํธ | Reanimated |
๋ก๋ฉ/์ฑ๊ณต ์ ๋๋ฉ์ด์ | Lottie |
๋ณต์กํ ์ ํ ์ ๋๋ฉ์ด์ | Reanimated + react-native-gesture-handler |
ํญ๋ชฉ | ์ ๋ต |
---|---|
๋ฆฌ๋ ๋ ๋ฐฉ์ง | useRef ๋๋ useSharedValue ์ฌ์ฉ |
์ฑ๋ฅ ์ต์ ํ | useNativeDriver: true ๋ ํญ์ ๊ณ ๋ ค |
๋น๋๊ธฐ ์์ ์์ | Animated.sequence , delay() ๋ฑ ์กฐํฉ |
๋ชจ๋ฌ ์ ๋๋ฉ์ด์ | ์ด๊ธฐ/๋ซ๊ธฐ ์ ๋๋ฉ์ด์ ๋ถ๋ฆฌ ๊ตฌํ ์ถ์ฒ |
์ฒ์์ ๊ทธ๋ฅ opacity
์ ๋๋ง ์ค๋ ์ถฉ๋ถํ๋ค๊ณ ์๊ฐํ๋๋ฐ
ํ๋ฉด ์ ํ, ์ค์์ดํ, ๋๋๊ทธ, ํญ ๋ฐ์์ฑ ๋ฑ
์ฑ์ ๊ณ ๊ธ์ค๋ฌ์ด ๋๋์ ์ ๋๋ฉ์ด์
์ด ์ฑ
์์ง๊ณ ์๋ค๋ ๊ฑธ ์๊ฒ ๋๋ค.
์ง๊ธ์ ๋ฒํผ ํจ๊ณผ โ Animated,
์ ์ค์ฒ โ Reanimated,
๋ก๋ฉ/์ฑ๊ณต โ Lottie
์ด๋ฐ ๊ตฌ์กฐ๋ก ์ฐ๊ณ ์๊ณ ,
UI ํ๋ฆฌํฐ๊ฐ ๋์ ๋๊ฒ ์ข์์ก๋ค๋ ํผ๋๋ฐฑ๋ ์ข
์ข
๋ฐ๋๋ค.
๐ฌ โ์ ๋๋ฉ์ด์ ์ ๊ธฐ๋ฅ์ด ์๋๋ผ, ๊ฐ๋์ด๋ค.โ