SharedValueAnimation
그냥 내가 이름 지은거. sharedValue를 이용한 애니메이션은 flutter에서 explicit animation과 같다.
1. SharedValue
useSharedValue로 애니메이션 값을 설정한다. 값을바꾸면 그에따라 ui가 변함.
주의사항
sharedValue는 UI thread에서 사용되는 값이다. 고로 자바스크립트 스레드의 변수와 연산을 해서 style에 물려주면 동작을 하지 않음.
값을 섞어서 애니메이션을 주려면 AnimatedStyle이나 AnimatedProp을 사용해야함
2. withTiming, withSpring
withTiming, withSpring 같은걸로 값을 설정하면 worklet 기반 애니메이션이 진행된다.
3. AnimatedComponent, AnimatedStyle, AnimatedProp
기본적으로 Animated.View 이외에 다른 컴포넌트에 애니메이션을 만드려면 AnimatedComponent를 먼저 만들어야 한다.
sharedValue를 style에 바로 적용하는것은 가능하다.
그러나 value*5 같이 변형을 한건 AnimatedStyle로 만들어서 붙어야 한다.
prop에다가 animation을 주고 싶으면 AnimatedProp을 써야 한다.
TransitionAnimation
flutter에서 implicit animation과 같다.
1. TransitionProperty
implicit 하게 동작하는 애니메이션의 핵심. AnimatedComponent는 다 저걸 가지고 있음
style에 이걸 설정하면 css에서 값이 변하면 알아서 애니메이션이 진행된다.
- transitionDuraiton
- transitionDelay
- transitionTimingFunction : easing과 같음
- transitionBehaviour : 이건 딱히 쓸데가 없어보임..
function App() {
return (
<Animated.View
style={{
transitionProperty: 'borderRadius',
transitionDuration: 500,
transitionDelay: '300ms',
}}
/>
);
}
Keyframe Animation
미리 키프레임 단위로 정의한 애니메이션을 css에다가 붙이면 알아서 진행된다.
function App() {
return (
<Animated.View
style={{
animationName: {
'100%': {
transform: [{ translateX: 100 }],
},
},
animationDuration: '300ms',
}}
/>
);
}
혹은 아래처럼 따로 변수로 저장 가능
const pulse: CSSAnimationKeyframes = {
from: {
transform: [{ scale: 0.8 }, { rotateZ: '-15deg' }],
},
to: {
transform: [{ scale: 1.2 }, { rotateZ: '15deg' }],
},
};
이밖에도 훨씬 많은 애니메이션이 있으니 공식문서 홈피 참고
'React Native' 카테고리의 다른 글
| npx patch-package (0) | 2025.12.30 |
|---|---|
| Flutter와 비교해 RN에서 최적화 할때 고려해야 할것 (0) | 2025.12.20 |
| Flutter에서 RN으로 넘어오며 느낀 장단점들 (2) | 2025.12.10 |
| React Native Skia에서 uniform에 애니메이션 주기 (0) | 2025.11.10 |
| RN에서 네이티브 코드 불러오기 (0) | 2025.11.06 |
댓글