본문 바로가기
개발/Android

[Android] Property Animation – Translate (이동)

by Dev Aaron 2020. 11. 8.
반응형

본 포스팅은 아래 포스팅들과 관련있습니다.


이어서 본 포스팅에서는 Translate (이동) 애니메이션 구현 방법을 살펴보겠습니다. 먼저 구현 결과는 다음과 같습니다.

방향 키에 맞게 눈꽃 이미지가 이동하는 것을 확인할 수 있습니다. 구현은 아래와 같습니다.

class TranslateActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_translate)

        btnUp.setOnClickListener { animate(View.TRANSLATION_Y, -200f) }
        btnLeft.setOnClickListener { animate(View.TRANSLATION_X, -200f) }
        btnRight.setOnClickListener { animate(View.TRANSLATION_X, 200f) }
        btnDown.setOnClickListener { animate(View.TRANSLATION_Y, 200f) }
        btnRefresh.setOnClickListener {
            animate(View.TRANSLATION_X, 0f)
            animate(View.TRANSLATION_Y, 0f)
        }
    }

    private fun animate(property: Property<View, Float>, distance: Float) {
        ObjectAnimator.ofFloat(ivSnow, property, distance)
            .apply {
                duration = 1000
            }
            .start()
    }

}

이전 Rotate(회전) 예제와 비교하여 크게 바뀐 점은 없으며, 단지 ObjectAnimator.ofFloat 함수 호출의 인자 정도가 바뀌었습니다.

좌우, 상하 움직임을 위해 View.TRANSLATION_X, Y 속성을 사용하였고, 얼마만큼 이동할지를 결정하기 위해 하나의 Float 인자를 사용하였습니다.

한 가지 주의할 점은, 애니메이션이 종료되기 전에 이동 버튼을 연속하여 누르게 되면 원하는 것과 다르게 동작할 수 있다는 점입니다. 이 부분에 대해서는 별도 포스트에서 다루겠습니다.

반응형