본문 바로가기

안드로이드/자바

[안드로이드/Android] 프레임 애니메이션 구현

반응형

 

이번 포스팅의 주제는 '프레임 애니메이션'입니다.

일반적으로 애니메이션은 위젯의 크기나 위치등을 조정하는 애니메이션을 많이 사용하지만, 프레임 애니메이션은 이미지뷰의 위젯을

활용해 여러 이미지를 교차하여 보여주는 애니메이션을 말합니다.



1. 교차해서 보여줄 이미지들을 drawable폴더에 넣습니다.


2. drawable폴더에 새로운 resource file을 생성합니다. ( root element는 animation-list )


resource file

animation-list의 oneshot은 리소스 파일의 리스트를 한번만 실행할지 정하는 값으로 'ture'일 경우 애니메이션은 한번만 재생됩니다.

각 아이템의 duraion은 이미지를 얼만큼 보여줄지 시작을 설정하는 것으로 단위는 밀리세컨드 입니다.

 <!-- Animation frames are wheel0.png through wheel5.png
     files inside the res/drawable/ folder -->
 <animation-list android:id="@+id/selected" android:oneshot="false">
    <item android:drawable="@drawable/wheel0" android:duration="50" />
    <item android:drawable="@drawable/wheel1" android:duration="50" />
    <item android:drawable="@drawable/wheel2" android:duration="50" />
    <item android:drawable="@drawable/wheel3" android:duration="50" />
    <item android:drawable="@drawable/wheel4" android:duration="50" />
    <item android:drawable="@drawable/wheel5" android:duration="50" /> 

 </animation-list>



3. 애니메이션을 보여줄 이미지뷰 위젯을 생성합니다.


4. 생성된 이미지뷰의 background resource에 2번에서 생성한 리소스 파일을 셋팅합니다.

xml이나 자바 소스로 이미지뷰의 background에 파일을 설정합니다..

<ImageView
android:layout_width="wrap_content"
android:background="@drawable/motion"
android:layout_height="wrap_content" />


5. 이미지뷰로부터 AnimationDrawable 객체를 얻어 애니메이션을 제어(실행/중단) 합니다

실행

AnimationDrawable anim = (AnimationDrawable) getBinding().ivMotion.getBackground();
anim.start();

중단

AnimationDrawable anim = (AnimationDrawable) getBinding().ivMotion.getBackground();
anim.stop();


gif파일을 사용해서 프레임 애니메이션과 같은 효과를 줄 수 있지만 장단점이 있습니다.

장점

각각 이미지를 프로젝트 파일에 넣는것보다 용량이 작습니다.

단점 

gif실행시 테두리의 흰색 선과 비슷한게 보이고 이미지가 깨져보입니다.


상황에따라서 쓰시면 됩니다.




해당 포스팅은 지극히 주관적인 내용으로 저자의 복기 목적으로 작성된 것이고, 내용에대해 수정이나 추가 요청은 언제든 환영합니다. 











반응형