본문 바로가기
Project/안드로이드 프로젝트(HomingBird)

Android Studio, JAVA] ObjectAnimator 이용하기

by 김마리님 2020. 12. 2.

앞서 두 포스팅의 단점은, view의 그래픽만 이동하고 실질적인 레이아웃은 원래 자리에 남아있다는 것이다. 그렇기 때문에 만일 지금처럼 뷰 애니메이팅을 이용하려 한다면, 만약 편지에 클릭 리스너를 적용하고 싶다면 번거롭게 뷰 이동후 -> 뷰 의 이동이 끝날 때 실질적인 레이아웃을 이동시켜야 한다.

그렇기 때문에 차라리 뷰 애니메이션보다 Object Animator을 이용해보도록 한다.

 

필자는 간단하게 위로 이동하는 모션만 만들었기 때문에, 자바파일에서 속성을 선언했는데 이렇게 보면 차라리 뷰 애니메이션보다 간단할수도 있겠다. 

 

    private void mailLoadAction() {
        ObjectAnimator animator = ObjectAnimator.ofFloat(linearLayoutMail, "translationY",  -mailLayoutHeight);
        animator.setDuration(700);
        animator.setInterpolator(new OvershootInterpolator());
        animator.setTarget(linearLayoutMail);
        animator.addListener(mailListener);
        animator.start();
    }

 

이 모션은 우체통이 다 흔들리고 난 후에 나타나는 모션이다. 

먼저,

ObjectAnimator animator = ObjectAnimator.ofFloat(linearLayoutMail, "translationY", -mailLayoutHeight);

로 애니메이션을 선언한다. 

첫번째 변수에는 움직일 오브젝트.

두 번째 변수에는 파라미터 이름을 적고, 세번째에 움직일 애니메이션의 값을 적는다.

translatonY 프로퍼티는 현재 위치에서의 이동하기 때문에 변수를 하나만 가지고, Y 시작지점도 정하기 때문에 startValue와 endValue 두 개의 변수를 받는다. 

duration과 interpolator, 그리고 이 애니메이션의 타겟을 선정하고 start를 하면 애니메이션이 시작된다.

 

ObjectAnimator은 말 그대로 오브젝트를 옮겨주기 때문에 레이아웃까지 이동되면서 클릭 리스너가 원활해진다.

 

 

반응형