본문 바로가기

Android/공부

AnimationDrawable 사용해서 애니메이션 만들기

1. 개요

화면에 애니메이션을 표현하는 경우가 종종 있습니다.

이 경우 AnimationDrawable을 사용하면 보다 쉽게 애니메이션을 화면에 표시할 수 있습니다.

2. 사용법

1) 이미지 만들기

먼저 화면에 사용할 이미지를 설정합니다. 저는 간편하게 아래 이미지를 사용했습니다.

2) 애니메이션 파일 만들기

drawble 폴더에 animation-list 파일을 만듭니다. 코드는 다음과 같습니다.

<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
    android:oneshot="false">
    <item android:drawable="@drawable/anim1" android:duration="100"/>
    <item android:drawable="@drawable/anim2" android:duration="100"/>
    <item android:drawable="@drawable/anim3" android:duration="100"/>
    <item android:drawable="@drawable/anim4" android:duration="100"/>
</animation-list>

이때 oneshot 속성은 연속 재생 여부입니다. true로 설정하면 한 번만 애니메이션을 실행한 다음 멈춰있고, false로 설정하면 해당 애니메이션을 반복해서 재생합니다.

그리고 각 아이템을 만들어줍니다. 이때 하나의 아이템은 애니메이션에서 하나의 프레임이 됩니다.

각 속성은 다음과 같습니다.

a. drawble

화면에 표시할 이미지입니다.

b. duration

해당 이미지가 화면에 표시되는 시간입니다. 밀리세컨드 단위이기 때문에 1초 동안 화면에 표시하기 위해선 1000으로 설정해줍니다.

3) 이미지뷰에 연결해주기

애니메이션 파일을 만들었으니 이를 이미지뷰에 연결해주어야 합니다.

var imageView: ImageView = findViewById(R.id.imageView)
        imageView.let {
            it.setBackgroundResource(R.drawable.animation)
            var animationDrawable = it.background as AnimationDrawable
            animationDrawable.start()
        }

먼저 setImageResource를 통해 이미지뷰에 애니메이션을 설정합니다.

이후 해당 이미지뷰로부터 AnimationDrawable 객체를 가져오고, 이를 시작합니다.

물론 애니메이션 시작은 다른 곳에서 해도 됩니다.

3. 시연 화면

좀 더 처리를 한다면 자연스러운 애니메이션을 원하는 대로 구현할 수 있습니다.

 

728x90
반응형