간단한 애니메이션 예제
16 Jan 2016 | Android UX안드로이드에서 간단한 애니메이션(Animation)을 구현하는 방법을 알아보도록 하겠습니다.
투명도 조절
다음 XML 파일을 res/anim 폴더 아래에 만들어줍니다. 만약, anim 폴더가 존재하지 않는 경우는 직접 만들어주면 됩니다.
alpha.xml
<?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:duration="3000" android:fromAlpha="0.0" android:interpolator="@android:anim/accelerate_interpolator" android:toAlpha="1.0" />
투명도 값을 의미하는 alpha 값은 0.0이 완전 투명, 1.0이 완전 불투명을 의미합니다. 그리고 duration의 단위는 msec(1/1000 초)입니다.
MainActivity.java
public class snowSample extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.snow_intro);
ImageView imageview = (ImageView) findViewById(R.id.img_intro_logo);
Animation anim = AnimationUtils.loadAnimation(this, R.anim.alpha);
imageview.startAnimation(anim);
}
}
객체 움직임
객체 움직임을 나타내는 Tween Animation 예제를 살펴보겠습니다.
scale.xml
<?xml version="1.0" encoding="utf-8"?> <scale xmlns:android="http://schemas.android.com/apk/res/android" android:duration="3000" android:fromXScale="1.0" android:fromYScale="1.0" android:interpolator="@android:anim/accelerate_interpolator" android:pivotX="50%p" android:pivotY="50%p" android:toXScale="0.5" android:toYScale="0.5" />
set 태그 사용법
set 태그는 여러 종류의 Animation을 하나의 세트로 묶어서 동작하도록 하는 태그입니다. 예제는 다음과 같습니다.
set1.xml (첫 번째 예제)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<alpha
android:duration="5000"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
<scale
android:duration="3000"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="50%p"
android:pivotY="50%p"
android:startOffset="3000"
android:toXScale="0.5"
android:toYScale="0.5" />
</set>
startOffset은 시작 시간을 의미합니다. 위의 Animation 내용을 살펴보면, Animation이 시작되면서 5 초(5000 msec)동안 투명도가 서서히 변하는 애니메이션이 구동됩니다. 그리고, 3 초 후에 크기 변경 애니메이션이 3 초동안 실행됩니다. 즉, Animation 효과들이 순차적 또는 동시에 실행되도록 할 수 있습니다.
set2.xml (두 번째 예제)
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:interpolator="@android:anim/accelerate_interpolator">
<alpha
android:duration="5000"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
<scale
android:duration="3000"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="50%p"
android:pivotY="50%p"
android:startOffset="3000"
android:toXScale="0.5"
android:toYScale="0.5" />
<translate
android:duration="3000"
android:fromXDelta="0"
android:fromYDelta="0"
android:startOffset="5000"
android:toXDelta="0"
android:toYDelta="50%p" />
<rotate
android:duration="1000"
android:fromDegrees="0"
android:pivotX="30%p"
android:pivotY="50%p"
android:startOffset="7000"
android:toDegrees="360" />
</set>