스크랩 !!
https://jinsangjin.tistory.com/30
최근 안드로이드 앱 개발을 하면서 애니메이션을 사용해보고 있다.
그런데 같은 애니메이션도 구현하는 방식이 천차만별이다.
애니메이션에 대해서 개념을 잡고 갈 필요성을 느껴 정리 해보고자 한다.
해당 블로그의 내용을 참고하여 정리했다.
애니메이션의 종류
1. View Animation
- View의 속성이 바뀌지 않는다.
- 예를 들어, view를 오른쪽으로 100만큼 이동시키는 애니메이션이 있다고 가정하자. 애니메이션 효과로 view는 오른쪽으로 100만큼 이동했지만 클릭시 터치가 되지 않는다. 왜냐하면 view의 속성은 그대로 0의 위치에 있기 때문이다.
-> Splash screen을 만드는데 주로 사용된다.
2. Property Animation
- View의 속성이 바뀐다.
-> Animation 효과 이후 click 처리가 필요한 경우
-> 대부분의 애니메이션 효과는 property Animation으로 만든다고 한다.
3. Transition Animation
- API21+ 부터 적용 가능하고 화면 전환시 애니메이션 효과를 줄 수 있다.
Property Animation
- 가장 많이 쓰이는 Animation
1) ValueAnimator
(코드로 정의)
- ValueAnimator valueAnimator = ValueAnimator.ofFloat(0f, 500f);
(xml로 정의된 것 가져오기)
- ValueAnimator valueAnimator = (ValueAnimator) AnimatorInflater.loadAnimator(this, R.animator.value_animator_ex);
2) ObjectAnimator
- ValueAnimator에서 개선된 기능이다.
- valueAnimator는 자동으로 property를 업데이트 해주기 때문에 .AnimatorUpdateListener를 사용하지 않아도 된다.
- 구현방법은 마찬가지로 코드로 정의하는 방법, xml로 가져오는 방법 두가지가 있다.(ValuAnimator 를 ObjectAnimator로 바꿔주기만 하면 된다.)
View Animation
1)Tween Animation
- Animation anim = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.scale);
view.startAnimation(anim);
- 위와 같이 AnimationUtils를 사용
2)Frame Animation
- frame을 연속적으로 보여줌으로써 애니메이션 효과를 준다.
->View Animation에 구현할 수 있는 것은 ViewPropertyAnimator로 더 빠르고 간결하게 구현할 수 있기 때문에 실질적으로 잘 쓰이지 않는다고 한다.
3. Transition Animation
- 말 그대로 전환시 사용할 수 있는 애니메이션이다.
- activity -> activity 로 전환시 밋밋함으로 해소해줄 친구다.
- udacity android material design 강의를 봤었는데 해당 주제를 비중있게 다루고 있었다.
- API21부터 적용 가능
- 이 부분은 나중에 기회가 되면 더 공부해서 정리해봐야겠다.
기타
"Animation을 여러 개 사용하려면?"
- AnimatorSet
- ViewPropertyAnimator
"Animation이 나의 앱을 무겁게 만들지는 않을까?"
- 당연하다.
- View 렌더링 과정 중 animation Stage가 있다. 그 곳을 확인하자
- >개발자 모드의 profile gpu rendering을 활용하면 anim의 부하를 확인할 수 있다.
- https://developer.android.com/topic/performance/rendering/inspect-gpu-rendering
참고 2
https://mainia.tistory.com/2897
◎ fromXScale : 시작하는 X 의 크기
◎ toXScale : 끝나는 시점의 X 크기.
◎ fromYScale : 시작하는 Y 의 크기.
◎ toYScale : 끝나는 시점의 Y 크기
◎ pivotX : X 좌표의 중심점
◎ pivotY : Y 좌표의 중심점
◎ duration : 애니메이션 적용 시간
◎ repeatCount : 반복 횟수
◎ repeatMode : 반복시 다시 생성될 때 방향
1) Alpha : 투명도 변환, 주로 fade-in / fade-out 효과를 줄 때 쓸 수 있다.
2) Rotate : 회전을 주고 싶을 때 사용한다.
3) Scale : 크기 변환 속성이다. X, Y축을 따로 설정할 수 있다.
4) Translate : 위치를 변경할 때 사용한다.
출처: https://dunchi.tistory.com/95 [둔치의 개발이야기]
https://developer.android.com/guide/fragments/animate
참고 3
https://youngest-programming.tistory.com/483
1. Enter Animation
다음 사진과 같이 새로 전활될(들어올,Enter) B의 전환 애니메이션을 뜻 합니다. 왼쪽에서 오른쪽으로 움직이는 애니메이션이라고 예시를 들겠습니다. ㅎㅎ Enter 라는 뜻 그대로 생각하시면 이후 애니메이션들도 어떻게 동작할지 감이 잡히고 더 쉬울 것이라고 생각합니다.
2. Exit Animation
Exit 애니메이션은 이제 전환을 당해서 화면에서 가려지거나 사라질 A의 전환 애니메이션 입니다.
그래서 Enter와 Exit 애니메이션을 오른쪽으로 이동하게 설정한다면 다음과 같이 진행되겠네요 :)
3. Pop Enter Animation
먼저 Pop이란 뜻에 대해 이해해야 합니다. 여기서 Pop이란 Stack 자료구조처럼 위에 가장 상단의 데이터가 Pop 된다는 뜻으로 여기 Jetpack Navigation에서는 화면(예: 프래그먼트) 스택구조로 쌓여있는데 백스택 버튼 클릭 등의 이유로 맨 위에있던 화면이 Pop 될때의 애니메이션이라고 생각하면 됩니다.
그래서 결론을 말하자면 Pop Enter는 이전 화면으로 돌아갈 때(Pop or Back) 이동할 BackStack의 Destination에 대한 애니메이션 입니다.
그림으로 설명하자면 다음과 같습니다. A 화면 스택위에 B가 있었는데 B가 Pop 되면 A가 보이게 될텐데 그때의 A가 화면에 나타나는 애니메이션이라고 보시면 됩니다.
4. Pop Exit Animation
반대로 Pop Exit는 이전 화면으로 돌아갈 때(Pop or Back) 종료되는 현재 Destincation 에 대한 전환 애니메이션 입니다.
즉 스택의 최상단 즉 보여지고 있던 B화면이 POP되면서 사라지면서의 애니메이션입니다.
만약 위 3번의 A가 오른쪽에서 왼쪽으로 오게하는 전환 애니메이션을 가진 Pop Exit 애니메이션과
여기서 B의 전환 애니메이션도 똑같이 적용한다면 다음과 같이 되겠네요.
리소스 속성
https://developer.android.com/guide/topics/resources/animation-resource?hl=ko
'Android' 카테고리의 다른 글
Android UI 파편화 관련 (0) | 2022.09.01 |
---|---|
android 조이스틱 (0) | 2022.03.25 |
AAC : navigation (0) | 2022.02.21 |
android ISP 연동 관련 (0) | 2022.01.25 |
안드로이드 주소록 연락처 가져오기 (0) | 2021.10.08 |