플러터 애니메이션

jaybon·2023년 3월 12일
0

플러터 flutter

목록 보기
13/16

개요

Flutter 애니메이션은 개발자가 애플리케이션에서 동적이고 매력적인 사용자 인터페이스를 만들 수 있게 해주는 강력한 기능입니다. Flutter는 애니메이션을 더 쉽게 만들고 제어할 수 있도록 여러 클래스와 API를 제공합니다.

Flutter의 애니메이션에는 시간이 지남에 따라 위젯의 값을 변경하여 움직임이나 변형의 환영을 만드는 것이 포함됩니다. 이는 위치, 불투명도, 크기 또는 색상과 같은 속성을 변경하여 수행할 수 있습니다. 이러한 속성을 부드럽고 점진적으로 변경함으로써 개발자는 자연스럽고 시각적으로 보기 좋은 애니메이션을 만들 수 있습니다.

작동 로드맵

다음은 Flutter에서 애니메이션을 작동시키기 위한 로드맵에 대한 간략한 요약입니다.

적절한 애니메이션 유형 선택: Flutter에는 여러 유형의 애니메이션이 있으며 사용 사례에 따라 올바른 유형을 선택하는 것이 중요합니다.

애니메이션 정의: 애니메이션 유형을 선택한 후에는 AnimationController 또는 다른 애니메이션 클래스를 사용하여 애니메이션을 정의해야 합니다. 여기에는 기간, 값 및 곡선과 같은 매개변수 설정이 포함됩니다.

위젯 래핑: 위젯에 애니메이션을 적용하려면 애니메이션을 매개변수로 사용하는 AnimatedWidget 또는 AnimatedBuilder 클래스에 위젯을 래핑해야 합니다.

애니메이션 로직 만들기: 여기에는 시간 경과에 따라 애니메이션이 진행되는 방식을 결정하는 로직을 정의하는 작업이 포함됩니다. 이는 Tween 또는 기타 애니메이션 클래스를 사용하여 수행할 수 있습니다.

애니메이션 트리거: 마지막으로 AnimationController에서 forward(), reverse() 또는 repeat()와 같은 메서드를 호출하여 애니메이션을 트리거해야 합니다.

AnimationController

Flutter의 AnimationController는 Flutter에서 애니메이션을 제어하는 데 사용되는 강력한 클래스입니다. Flutter 애니메이션 클래스의 하위 클래스이며 애니메이션의 지속 시간, 상태 및 방향을 관리하는 역할을 합니다. AnimationController는 지정된 기간 동안 값을 업데이트하여 애니메이션을 구동하는 데 사용됩니다.

AnimationController를 만들 때 애니메이션의 지속 시간, 애니메이션의 초기 값 및 vsync 매개 변수를 지정합니다. duration 매개변수는 애니메이션의 소요 시간을 결정하고 initial value 매개변수는 애니메이션의 시작 값을 결정합니다. vsync 매개변수는 애니메이션이 원활하게 실행되도록 장치의 재생률과 애니메이션을 동기화하는 데 사용됩니다.

AnimationController에는 애니메이션을 제어하는 데 사용되는 여러 메서드가 있습니다. 가장 일반적으로 사용되는 방법 중 하나는 애니메이션을 처음부터 시작하는 'forward' 방법입니다. 'reverse' 방식은 애니메이션을 역방향으로 시작하는 반면 'repeat' 방식은 애니메이션을 무한 반복합니다.

AnimationController에는 애니메이션 상태에 대한 정보를 제공하는 여러 속성도 있습니다. value 속성은 UI를 업데이트하는 데 사용할 수 있는 애니메이션의 현재 값을 반환합니다. 'status' 속성은 애니메이션의 현재 상태를 반환하며, 애니메이션이 실행 중인지, 중지되었는지 또는 일시 중지되었는지를 결정하는 데 사용할 수 있습니다.

AnimationController 사용의 이점 중 하나는 비교적 쉽게 복잡한 애니메이션을 만들 수 있다는 것입니다. 예를 들어 'curve' 속성을 사용하여 애니메이션이 시간 경과에 따라 진행되는 방식을 결정하는 애니메이션의 타이밍 곡선을 지정할 수 있습니다. 곡선을 사용자 지정하여 느리게 시작한 다음 속도를 높이는 애니메이션 또는 빠르게 시작한 다음 느리게 하는 애니메이션을 만들 수 있습니다.

결론적으로 Flutter의 AnimationController는 Flutter에서 애니메이션을 만들기 위한 필수 클래스입니다. 애니메이션을 제어하는 강력하고 유연한 방법을 제공하며 복잡하고 아름다운 애니메이션을 쉽게 만들 수 있습니다.

매개변수

Duration: 이 매개변수는 애니메이션이 발생하는 시간을 설정하는 데 사용됩니다.
Value: 애니메이션의 초기값을 설정하는 파라미터입니다.
LowerBound: 이 매개변수는 애니메이션의 최소값을 설정하는 데 사용됩니다.
UpperBound: 이 매개변수는 애니메이션의 최대값을 설정하는 데 사용됩니다.
AnimationBehavior: 이 매개변수는 애니메이션이 범위 끝에 도달했을 때 동작하는 방식을 지정하는 데 사용됩니다. 옵션은 정상, 역방향 및 클램프입니다.
DebugLabel: 이 매개변수는 애니메이션과 관련된 레이블을 설정하는 데 사용됩니다. 이는 디버깅 목적으로 유용할 수 있습니다.
AnimationDirection: 이 매개변수는 애니메이션의 방향을 지정하는 데 사용됩니다. 옵션은 forward, reverse 및 vsync입니다.
vsync: 이 매개변수는 애니메이션을 장치의 재생 빈도와 동기화하는 데 사용됩니다.

이러한 매개변수를 통해 개발자는 사용자 지정 가능하고 효율적인 애니메이션을 만들 수 있습니다. 이러한 매개변수를 효과적으로 사용함으로써 개발자는 앱에서 사용자 경험을 향상시키는 매끄럽고 시각적으로 매력적인 애니메이션을 만들 수 있습니다.

Animation

유형

Flutter는 개발자가 동적이고 매력적인 사용자 인터페이스를 만드는 데 사용할 수 있는 여러 유형의 애니메이션을 제공합니다. Flutter에서 가장 일반적인 유형의 애니메이션은 다음과 같습니다.

Tween Animation: 이 유형의 애니메이션은 두 끝점 사이의 값에 애니메이션을 적용하는 데 사용됩니다. 애니메이션의 시작 및 종료 값을 정의하는 Tween 객체를 사용하여 생성됩니다.

Curved Animation: 이 유형의 애니메이션은 애니메이션의 타이밍을 조정하는 데 사용할 수 있는 곡선을 애니메이션에 적용합니다. 천천히 시작한 다음 속도를 높이는 애니메이션 또는 빠르게 시작한 다음 속도를 줄이는 애니메이션을 만드는 데 사용할 수 있습니다.

Animated Widget: 이 유형의 애니메이션은 위젯 속성에 애니메이션을 적용하는 데 사용됩니다. AnimatedWidget 클래스에서 위젯을 래핑하고 AnimationController를 사용하여 애니메이션을 정의하여 생성됩니다.

Hero Animation: 이 유형의 애니메이션은 서로 다른 화면에 있는 두 위젯 간에 부드러운 전환을 생성하는 데 사용됩니다. Hero 위젯을 사용하여 생성되며 화면 간 원활한 전환을 만드는 데 유용합니다.

Implicit Animation: 이 유형의 애니메이션은 위젯 속성이 변경될 때 자동으로 애니메이션화하는 데 사용됩니다. AnimatedContainer 또는 AnimatedOpacity 위젯을 사용하여 생성되며 사용자 상호 작용에 응답하는 간단한 애니메이션을 생성하는 데 유용합니다.

Custom Animation: 이 유형의 애니메이션을 사용하면 개발자가 Flutter에서 기본적으로 사용할 수 없는 맞춤 애니메이션을 만들 수 있습니다. 애니메이션 클래스를 서브클래싱하고 애니메이션 로직을 수동으로 정의하여 생성됩니다.

애니메이션 중 하나인 Tween 생성자 매개변수

begin: 이 매개 변수는 애니메이션의 시작 값을 지정하는 데 사용됩니다.

end: 이 파라미터는 애니메이션의 종료 값을 지정하는 데 사용됩니다.

curve: 이 매개변수는 애니메이션의 타이밍 곡선을 지정하는 데 사용됩니다. 곡선을 사용자 지정하여 느리게 시작한 다음 속도를 높이는 애니메이션 또는 빠르게 시작한 다음 느리게 하는 애니메이션을 만들 수 있습니다.

reverseCurve: 이 매개변수는 애니메이션이 역방향으로 실행될 때 애니메이션의 타이밍 곡선을 지정하는 데 사용됩니다. 이를 통해 개발자는 정방향으로 실행할 때와 반대로 역방향으로 다르게 작동하는 애니메이션을 만들 수 있습니다.

tweenValueBuilder: 이 매개변수는 애니메이션 값이 시작 값과 끝 값 사이에 어떻게 보간되어야 하는지에 대한 논리를 지정하는 데 사용됩니다. 0.0에서 1.0 사이의 값을 취하고 보간된 값을 반환합니다.

duration: 이 매개변수는 애니메이션이 발생해야 하는 기간을 지정하는 데 사용됩니다.

onEnd: 이 매개변수는 애니메이션이 해당 범위의 끝에 도달할 때 호출되는 콜백 함수를 지정하는 데 사용됩니다.

label: 이 매개변수는 애니메이션과 관련된 레이블을 지정하는 데 사용됩니다. 이는 디버깅 목적으로 유용할 수 있습니다.

애니메이션을 사용하는 위젯

AnimatedContainer: 이 위젯은 크기, 색상 또는 장식의 변화에 대해 지정된 지속 시간과 곡선으로 컨테이너를 생성합니다.

AnimatedOpacity: 이 위젯은 하위 위젯의 불투명도를 0.0에서 1.0으로 또는 그 반대로 애니메이션합니다.

AnimatedPadding: 이 위젯은 하위 위젯의 패딩에 애니메이션을 적용하여 위젯 간의 동적 간격을 만드는 데 유용할 수 있습니다.

AnimatedPositioned: 이 위젯은 상위 컨테이너 내 하위 위젯의 위치를 애니메이션합니다.

AnimatedBuilder: 이 위젯을 사용하면 애니메이션이 변경될 때마다 호출되는 콜백 함수를 제공하여 개발자가 자신만의 맞춤형 애니메이션을 만들 수 있습니다.

SlideTransition: 이 위젯은 화면 측면에서 밀어 넣는 것과 같이 지정된 축을 따라 하위 위젯의 위치를 애니메이션합니다.

FadeTransition: 이 위젯은 AnimatedOpacity와 유사하게 하위 위젯의 불투명도를 0.0에서 1.0으로 또는 그 반대로 애니메이션화합니다.

RotationTransition: 이 위젯은 지정된 각도로 하위 위젯의 회전을 애니메이션화합니다.

SizeTransition: 이 위젯은 자식 위젯의 크기를 한 크기에서 다른 크기로 애니메이션화합니다.

DecoratedBoxTransition: 이 위젯은 배경색이나 테두리 반경과 같은 자식 위젯의 장식을 애니메이션화합니다.

ScaleTransition: 이 위젯은 자식 위젯의 크기를 한 배율에서 다른 배율로 애니메이션합니다.

참고자료

https://velog.io/@broccolism/Flutter-%ED%94%8C%EB%9F%AC%ED%84%B0-%EC%95%A0%EB%8B%88%EB%A9%94%EC%9D%B4%EC%85%98-%EC%A0%84%EC%B2%B4%EB%B3%B4%EA%B8%B0

profile
티스토리 블로그 https://ondolroom.tistory.com/

0개의 댓글