본문 바로가기

IT_Story/안드로이드

안드로이드 애니메이션

안드로이드에서는 트윈 애니메이션이라고 불리는 애니메이션 방법을 지원하는데 이것은 이동, 확대/축소, 회전과 같은 일정한 패턴을 가지고 움직이는 애니메이션을 구현할 때 사용된다.


애니메이션을 만드려면

1. XML로 어떻게 동작하는지 정의한다.

2. 자바 코스에 애니메이션 객체를 불러 startAnimation()을 통해 동작하게 한다.


1. XML 정의하는 방법.

프로젝트 내의 res/anim 폴더 밑에 원하는 애니메이션 xml을 정의한다.


<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android"

android:interpolator="@android:anim/accelerate_interpolator">

 <translate

  android:fromXDelta="100%p"

  android:toXDelta="0%p"

  android:duration="1000"

 android:repeatCount="10000000" />

<alpha 

android:fromAlpha="1.0" 

android:toAlpha="0.0" 

android:duration="1000"

android:repeatCount="10000000" />

</set>


위의 코드는 

<translate>와 <alpha>를 사용한 페이드 아웃 애니메이션이다.

우선, <tranlate>는 뷰나 기타 구성요소가 위치 이동을 하도록 만드는 태그이다.

android:fromXDelta 속성은 X축 어디서부터 이동할 것인지,

android:toXDelta 속성은 X축 어디까지 이동할 것인지 의미한다.

즉, 100%부터 0%까지 이동한다고 했으니 뷰의 오른쪽 끝 지점에서 왼쪽 끝지점까지 이동한다는 뜻이다.

android:fromAlpha="0.0" android:toAlpha="1.0" 으로 바꾸면 페이드 인 애니메이션이 된다.

(페이드 아웃 : 화면이 점차 어두워지면서 장면이 바뀌는 것, 페이드 인 : 화면이 점차 밝아지면서 장면이 전환되는 것)

duration '1000'은 '1초'를 의미한다.

reapeatCount는 애니메이션이 반복될 횟수를 지정한다.

여러 애니메이션을 설정하고 싶으면 <set>태그를 사용한다.


각 애니메이션별로 속성값이 있는 맞는 애니메이션의 속성을 사용해야된다.

alpha - fromAlpha, toAlpha

scale - fromXScale, toXScale, fromYScale, toYScla,e pivotX, pivotY, fillAfter, fillBefore

rotate - fromDegrees, toDegrees, pivotX, pivotY, startOffset

translate - toXDelta, toYDelta



2. 자바코드에서 사용하기

public class AnimationActivity extend Activity{

Animation animation;


@Override

public void onCreate(Bundel savedInstanceState){

super.onCrate(savedInstanceState);

setecontentView(R.layout.main);

    animation = AnimationUtils.loadAnimation(this, R.anim.animation);


View.satrtAnimaiton(animain);

    ....

}


.....

}


위의 코드에서 빨간색으로 쓰여진 곳을 보면

xml에 정의된 애니메이션을 부르기 위해서 AnimationUtils 객체를 사용하였다.


애니메이션을 보이기 위해서는

View.satrtAnimaiton(animain);을 통하여 동작할 수 있다.