반응형
본 포스팅은 아래 포스팅들과 관련있습니다.
- [Android] Property Animation – Rotate (회전)
- [Android] Property Animation – Scale (확대/축소)
- [Android] Property Animation – Fade (나타나기/사라지기)
- [Android] Property Animation – Color (색상 변경)
- [Android] Property Animation – Snowing (눈 내리기)
이어서 본 포스팅에서는 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 인자를 사용하였습니다.
한 가지 주의할 점은, 애니메이션이 종료되기 전에 이동 버튼을 연속하여 누르게 되면 원하는 것과 다르게 동작할 수 있다는 점입니다. 이 부분에 대해서는 별도 포스트에서 다루겠습니다.
반응형
'개발 > Android' 카테고리의 다른 글
[Android] Property Animation – Fade (나타나기/사라지기) (0) | 2020.11.08 |
---|---|
[Android] Property Animation – Scale (확대/축소) (0) | 2020.11.08 |
[Android] Property Animation – Rotate (회전) (0) | 2020.11.08 |
[Android] Property Animation – intro (0) | 2020.11.08 |
[Android] Custom View – Intro (0) | 2020.11.08 |