안드로이드 Animation
Android Animation
안드로이드는 기본적으로 아래의 두가지 Animation 방법을 제공하고 있다.
1. Tweended animation : 뷰를 회전, 크기변경, 투명조절등의 에니메이션 방법
2. Frame-by-frame-animation : 연속된 이미지를 표시하는 에니메이션 방법
1. Tweended Animation
위치는 ‘/res/anim’ 폴더에 별도의 XML파일로 저장된다고 한다. 아 직 안 만들어 봐서 잘 모르겠지만 그냥 알아보도록 한다. Animation은 alpha(fading), scale, translate, rotate등을 주기 위해 정의될 수 있다. 다음과 속성을 지원을 한다.
ALPHA = fromAlpha와 toAlpha – 0에서 1사이의 부동 소수 |
Set 태그를 사용을 하면 animation 조합을 만들 수 잇다. Animation set은 하나 이상의 animation transformations을 가지며 set안에 있는 각각의 animation이 언제 어떻게 실행되는지 최적화하기 위한 추가적인 다양한 태그와 속성을 지원을 한다. 다음은 set에서 사용할 수 있는 태그이다.
duration |
밀리초로 된 애니메이션 지속 시간 |
startOffset |
밀리초로 된 시작 전 지연시간 |
fillBefore |
애니메이션 시작 전에 변환 여부 |
fillAfter |
애니메이션 종료 후 변환 여부 |
Interpolator |
시간의 흐름에 따라 효과의 속도가 어떻게 달라지는지를 설정하기 위한 interpolatier이다. 이것을 사용을 할려면 ‘android:anim/interpolationName’에 있는 것을 참조한다. |
다음은 그런 예제이다. 이것은 책에 360도 회전을 하는 animation set이라는 데 후에 animation을 제대로 공부한 다음에 이해를 해야 겠다. 예 제는 아래와 같다.
<?xmlversion="1.0"encoding="utf-8"?> <setxmlns:android=http://schemas.android.com/apk/res/android android:interpolator=”@android:anim/accelerate_interpolator”> <rotate android:fromDegrees=”0” android:toDegrees=”360“ android:pivotX=”50%” android:pivotY=”50%” android:startOffset=”500” android:duration=”1000” /> <scale android:fromXScale=”1.0” android:toXScale=”0.0“ android:fromYScale=”1.0” android:toYScale=”0.0“ android:pivotX=”50%” android:pivotY=”50%” android:startOffset=”500” android:duration=”500” /> <alpha android:fromAlpha=”1.0” android:toAlpha=”0.0“ android:startOffset=”500” android:duration=”500” /> </set> |
2. frame-by-frame animation 지정된 시간동안 출력된 일련의 drawable을 생성하도록 해준다. “/res/drawable”에 저장이된다. 다음의 예제는 리소스를 순환하면서 각각 0.5초씩 출력을 하는 간단한 XML코 드이다.
<animation-list xmlns:android=http://schemas.android.com/apk/res/android android:oneshot=”false”> <item android:drawable=”@drawable/rocket1” android:duration=”500” /> <item android:drawable=”@drawable/rocket2” android:duration=”500” /> <item android:drawable=”@drawable/rocket3” android:duration=”500” /> </android-list> |
이미지를 별도로 XML로 지정하자 않고 각각 리소스 ID를 가지고 그것을 참조한다.
[자료참고]
jaehwacho님의 노트 http://jaehwacho.springnote.com/pages/4714327