버그 잡이

[Android] 안드로이드 애니메이션 종류 #Property #View #Transition 본문

안드로이드

[Android] 안드로이드 애니메이션 종류 #Property #View #Transition

버그잡이 2020. 4. 7. 11:25

최근 안드로이드 앱 개발을 하면서 애니메이션을 사용해보고 있다.

그런데 같은 애니메이션도 구현하는 방식이 천차만별이다.

애니메이션에 대해서 개념을 잡고 갈 필요성을 느껴 정리 해보고자 한다.

 

https://medium.com/@shubham08gupta/a-beginners-guide-to-implement-android-animations-part-1-2-part-series-b5fce1fc85 

해당 블로그의 내용을 참고하여 정리했다.

 

 

 

애니메이션의 종류

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

반응형
Comments