본문 바로가기
개발/Android

[Android] Property Animation – Scale (확대/축소)

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

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


Android에서 확대/축소 애니메이션을 구현하는 방법을 알아 보겠습니다. 먼저 적용된 결과는 다음과 같습니다.

버튼을 누르면 2배로 커졌다가, 다시 버튼을 누르면 원상태로 돌아오는 애니메이션입니다. 코드는 다음과 같습니다.

class ScaleActivity : AppCompatActivity() {

    private var scaleLevel = 2F

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

        btnScale.setOnClickListener {
            animate(scaleLevel)
            if (scaleLevel == 2F) {
                scaleLevel = 1F
                btnScale.setImageResource(R.drawable.ic_zoom_out)
            } else {
                scaleLevel = 2F
                btnScale.setImageResource(R.drawable.ic_zoom_in)
            }
        }
    }

    private fun animate(scaleLevel: Float) {
        ObjectAnimator.ofFloat(ivSnow, View.SCALE_X, scaleLevel).start()
        ObjectAnimator.ofFloat(ivSnow, View.SCALE_Y, scaleLevel).start()
    }

}

핵심 부분은 바로 다음 코드입니다.

ObjectAnimator.ofFloat(ivSnow, View.SCALE_X, scaleLevel).start()
ObjectAnimator.ofFloat(ivSnow, View.SCALE_Y, scaleLevel).start()

Property로 View.SCALE_X, Y를 지정하였고, 얼마나 확대/축소할 것인지 Float 값을 지정합니다.

Property: SCALE

이전 애니메이션과 다르게 ObjectAnimator를 두 번 호출하게 되는데요. 한 번은 SCALE_X, 또 한 번은 SCALE_Y로 Property를 지정하여 호출합니다. 아마 충분히 예상하실 수 있듯 이미지 확대를 하기 위해서 X, Y 각각 확대를 해주는 케이스입니다. 이중 하나만 호출할 경우 확대/축소가 가로 혹은 세로로만 확대/축소될 것입니다.

Animation Value

세 번째 인자로 Float 값을 넣어줬는데, 이 값은 몇배나 확대/축소할 거인지를 나타냅니다. 즉 2F 값을 지정하면 2배, 1F를 넣어 호출하면 원래 크기로 돌아가게 됩니다.

반응형