간단한 애니메이션 예제
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>