반응형
본 포스팅은 아래 포스팅들과 관련있습니다.
- [Android] Property Animation – Rotate (회전)
- [Android] Property Animation – Translate (이동)
- [Android] Property Animation – Fade (나타나기/사라지기)
- [Android] Property Animation – Color (색상 변경)
- [Android] Property Animation – Snowing (눈 내리기)
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를 넣어 호출하면 원래 크기로 돌아가게 됩니다.
반응형
'개발 > Android' 카테고리의 다른 글
[Android] Property Animation – Color (색상 변경) (0) | 2020.11.08 |
---|---|
[Android] Property Animation – Fade (나타나기/사라지기) (0) | 2020.11.08 |
[Android] Property Animation – Translate (이동) (0) | 2020.11.08 |
[Android] Property Animation – Rotate (회전) (0) | 2020.11.08 |
[Android] Property Animation – intro (0) | 2020.11.08 |