일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- package
- kotlin
- Android
- Collection
- animation
- DART
- 클래스
- map
- 다트
- textstyle
- 플러터
- pushnamed
- variable
- 웹크롤러
- 코틀린
- function
- Class
- 함수
- Flutter
- List
- 크롤러
- import
- text
- python
- 콜렉션
- set
- 파이썬
- crawler
- ML
- Yocto
- Today
- Total
조용한 담장
Flutter: Staggered Animations 본문
여러 animation 을 시차를 두고 연속적으로 만드는 방법을 설명한 아래의 페이지의 내용을 살펴보자.
https://flutter.dev/docs/development/ui/animations/staggered-animations
여러개의 Tween 을 전체 animation 의 범위 0.0 ~ 1.0 의 내에서 쪼개어 구간(시간)을 할당한다.
Curve 의 implementer 중 하나인 Interval 을 사용하여 각 animation 의 시작과 끝을 지정한다.
하나의 AnimationController 를 사용하여 모든 animation 을 컨트롤 한다.
각 Tween 은 opacity, width, height, padding, borderRadius, color 속성을 animation 값으로 가진다.
예제의 소스코드 주소: https://github.com/flutter/website/tree/master/examples/_animation/basic_staggered_animation
예제의 동작화면
Tween
Tween 중 하나의 코드를 보자.
width = Tween<double>(
begin: 50.0,
end: 150.0,
).animate(
CurvedAnimation(
parent: controller,
curve: Interval(
0.125, 0.250,
curve: Curves.ease,
),
),
),
width 속성값을 가지는 Tween 을 생성한 코드이다.
animation 의 width 속성 값은 50.0 ~ 150.0 을 가진다.
Interval 은 전체 animation 의 범위 0.0 ~ 1.0 중에서 0.125 ~ 0.250 구간으로 설정하여 실제 이 Tween 의 animation 이 구현되는 기간을 설정한다.
AnimatedBuilder
animation 을 생성하는 코드를 보자.
Widget _buildAnimation(BuildContext context, Widget child) {
return Container(
padding: padding.value,
alignment: Alignment.bottomCenter,
child: Opacity(
opacity: opacity.value,
child: Container(
width: width.value,
height: height.value,
decoration: BoxDecoration(
color: color.value,
border: Border.all(
color: Colors.indigo[300],
width: 3.0,
),
borderRadius: borderRadius.value,
),
),
),
);
}
@override
Widget build(BuildContext context) {
return AnimatedBuilder(
builder: _buildAnimation,
animation: controller,
);
}
AnimatedBuilder 를 사용하여 animation 들의 속성들인 opacity, padding, width, height, color, borderRadius, color 를 구성한다.
Intervals
animation 시작 전의 초기 값들이다.
0.0 ~ 0.1 까지 opacity 값으로 animation 이 동작한다.
0.125 ~ 0.250 까지 width 값으로 animation 이 동작한다.
0.250 ~ 0.375 까지 height 와 padding 값으로 animation 이 동작한다.
0.375~ 0.500 까지 borderRadius 값으로 animation 이 동작한다.
0.500 ~ 0.750 까지 color 값으로 animation 이 동작한다.
'Flutter' 카테고리의 다른 글
Flutter Open Source App 1 : Time Cop (0) | 2020.04.02 |
---|---|
WHO 에서 Flutter 로 앱 개발 중 (0) | 2020.03.27 |
Flutter: Hero (0) | 2020.02.12 |
Flutter : Animation (3) | 2020.02.07 |
플러터 프로젝트 코멘트 지우기 (remove comments) (0) | 2020.01.28 |