본문 바로가기

나의 플랫폼/안드로이드

[Android] View translate animation

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

뷰를 이동 시키는 애니메이션을 구사할 때, 아래와 같은 형태를 먼저 생각하게 됩니다.


1. translate xml을 이용하여 애니메이션을 지정한다.

2. xml로 Animation 클래스를 생성 한다.

3. 애니메이션을 넣고자 하는 View에 설정 한다.

4. Animation을 start 시킨다.


위와 같은 형태는 복잡할 뿐만 아니라 버그나 예외 상황이 너무 많이 발생 합니다.

역시나 구글 형님들이 좋은 API를 만들어 두었네요.


mView.animate().translationY(500).withLayer();

위와 같이 하면 mView 라는 View를 500px 아래로 내리는 애니메이션을 실행 해라. 

withLayer 함수를 함께 사용하면 mView가 그 자리에 고정이 됩니다.


만약 아래 두 함수를 번갈아 가면서 호출 할 경우는?

mView.animate().translationY(-500).withLayer();

mView.animate().translationY(500).withLayer();


500px 만큼 내려 갔다가 500px 만큼 올라가게 됩니다. (당연 특정 이벤트를 주세요~ 버튼 클릭 같은 ㅎ)


참고로 translation 함수는 View에 기본 위치 에서 이동 되는 것입니다.

만약 500px로 이동하는 translationY 함수를 연속 2번 부르더라도 500px만 이동 합니다. 1000px 이동하지 않습니다. ㅎ



## 중요한 부분!

만약 500px 이동 도중, 즉 300px 정도에서 -500px로 이동하는 Animation을 호출 하였다면?


처음 제가 설명 드린 xml 형태로 애니메이션을 구현하게 되면,

View가 0 위치로 점프! 한 후에,  -500px로 이동하는 애니메이션이 돌아가게 됩니다.

보기 정말 안좋죠.


하지만, 위 함수 형태로 하게 되면


300px 위치 에서 -500px로 이동합니다. 아주 자연스럽게요^^ 

너무 좋죠! ㅎ


참고하세요.