안드로이드에서는 트윈 애니메이션이라고 불리는 애니메이션 방법을 지원하는데 이것은 이동, 확대/축소, 회전과 같은 일정한 패턴을 가지고 움직이는 애니메이션을 구현할 때 사용된다.
애니메이션을 만드려면
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);을 통하여 동작할 수 있다.