Android ViewPropertyAnimator를 활용하여 Animation 구현하기

이종현(JongHyunLee)
4 min readApr 12, 2019

--

안드로이드 개발자라면 항상 고민하는 것이 바로 애니메이션을 어떻게 하면 효율적으로 적용 할 것인가 입니다.

이에 컴포넌트 별로 동시에 애니메이션을 적용하는 방법과 복합적인 애니메이션 적용도 함께 알아보도록 하겠습니다.

android View에 속하는 모든 컴포넌트(TextView, Button 등등)들은 애니메이션을 구현할 수 있는 ViewPropertyAnimator 클래스를 가지며 View.animate()이를 이용하여 호출할 수 있습니다. 이러한 기능등을 통하여 간단한 애니메이션은 쉽게 구현이 가능합니다.

ViewPropertyAnimator은 메소드 체이닝을 지원하며 여러 애니메이션을 복합적으로 선언 할 수 있게하는 아주 강력한 기능을 가지고 있습니다.

1. 크기

Scale은 X(가로), Y(세로)값으로 조절이 가능합니다.

scale값은 Float값이며 1이면 본래의 크기입니다. 2f라면 2배의 크기이며 0.5f는 0.5배의 크기를 가집니다.

withEndAction{}메소드를 이용하면 애니메이션이 끝날때 하는 행위를 정의할 수 있습니다.

코드를 보면 쉽게 이해할 수 있습니다.

2. 투명도

투명도는 0f~1f사이의 값을 가지며 0f이면 투명상태, 1f이면 불투명 상태를 의미합니다.

코드를 보면 쉽게 이해할 수 있습니다.

3. 가로로 이동

Android에서는 dp단위를 사용하는 것이 일반적이지만 translateX(Float px)이므로 dp단위로 이동하고 싶을경우 dp값을 곱셈 해주어야 합니다.

4. 세로로 이동

가로이동과 동일한 개념으로 접근하면 됩니다.

5. 회전

rotation()은 회전 각도를 인자로 받으며 360f일 경우 한바퀴 회전하여 원래 상태로 돌아옵니다.

6. 투명도 + 크기

위의 애니메이션으로는 뭔가 부족합니다. ViewPropertyAnimator의 메소드들은 ViewPropertyAnimator를 반환하는 메서드 체이닝이 기본 구현방식이기 때문에 여러 애니메이션을 복합적으로 이용 가능합니다.

7. 가로로 이동 + 투명도 + 크기

8. 회전 + 크기

동전이 날리는 듯한 애니메이션도 구현이 가능합니다.

마무리

위와 같은 기능을 조합하면 여러 애니메이션을 코드레벨로 간단하게 구현이 가능하며 재사용 성도 용이합니다.

그런데 뭔가 부족합니다. 스프링처럼 튀는듯한 애니메이션도 넣고싶고, 속도도 처음엔 빠르고 나중엔 느리게 하는 애니메이션을 구현하고 싶습니다.

다음 포스팅에는 Interpolator를 이용하여 좀 더 섬세한 애니메이션을 구현해보도록 하겠습니다.

같이보면 좋은 글입니다.

전체 소스코드는 깃허브에 올려두도록 하겠습니다.
https://github.com/gus0000123/AnimationSample

이상 안드로이드 개발자 이종현이었습니다.
재밌게 읽으셨다면 👏🏻눌러 주시는 것도 잊지말아주세요~ 저에게 큰 힘이됩니다. :)

읽어주셔서 감사합니다.

Sign up to discover human stories that deepen your understanding of the world.

Free

Distraction-free reading. No ads.

Organize your knowledge with lists and highlights.

Tell your story. Find your audience.

Membership

Read member-only stories

Support writers you read most

Earn money for your writing

Listen to audio narrations

Read offline with the Medium app

--

--

No responses yet

Write a response