▶ 간단한 애니메이션 사용하기
안드로이드에서는 트윈 애니메이션(Tweened Animation)이라 불리는 애니메이션 방법을 지원하는데 이는 이동, 확대/축소, 회전과 같이 일정한 패턴을 가지고 움직이는 애니메이션을 구현할 때 사용됩니다.
애니메이션이 어떻게 동작하도록 할 건인지를 정의한 정보는 XML로 만듭니다. 이렇게 만든 정보는 자바 소스에서 Animation 객체로 로딩한 후 뷰 객체의 startAnimation()메소드를 이용해 에니메이션을 동작하도록 만듭니다. 즉, 첫 번째 단계로 애니메이션 액션을 XML로 정의하고 두 번째 단계로 애니메이션 객체로 로딩하며 세 번째 단계로 뷰에 애니메이션을 적용하여 동작 시킵니다.
▷ res/anim/flow.xml
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<translate
android:fromXDelta="100%p"
android:toXDelta="0%p"
android:duration="6000"
android:repeatCount="3"
/>
<alpha
android:fromAlpha="0.5"
android:toAlpha="1"
android:duration="6000"
android:repeatCount="3"
/>
</set>
<translate> 태그는 뷰나 기타 구성요소가 위치 이동을 하도록 만드는 액션 정보 입니다. 이를 위한 속성 중에서 fromXDelta 속성은 X축 어디서부터 이동할 것인지 그리고 toXDelta 속성은 X축 어디까지 이동할 것인지를 지정합니다. 100%부터 0%까지 이동한다고 하였으니 뷰의 오른쪽 끝 지점에서 왼쪽 끝 지점까지 이동하는 것을 의미합니다. duration 속성은 애니메이션이 지속되는 시간을 말하며 '6000' 이라는 값은 '6초'를 의미합니다. repeatCount는 애니메이션이 반복될 횟수를 지정하는데 여기에서는 세번 반복되도록 설정하였습니다. <alpha> 태그는 투명도를 변경할 수 있도록 하며 fromAlpha와 toAlpha 속성을 이용해 알파값이 어떻게 변경되는지 지정합니다.
▷ res/layout/main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/text01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="애니메이션 텍스트"
android:textSize="20dp"
/>
<LinearLayout
android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
<Button
android:id="@+id/startBtn"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:text=" 시작 "
android:padding="4dp"
android:textSize="20dp"
/>
</LinearLayout>
</LinearLayout>
▷ SampleButtonAnimationActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
public class SampleButtonAnimationActivity extends Activity {
Animation flowAnim;
TextView text01;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
flowAnim = AnimationUtils.loadAnimation(this, R.anim.flow);
text01 = (TextView) findViewById(R.id.text01);
Button startBtn = (Button) findViewById(R.id.startBtn);
startBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
flowAnim.setAnimationListener(new FlowAnimationListener());
text01.startAnimation(flowAnim);
}
});
}
private final class FlowAnimationListener implements
Animation.AnimationListener {
public void onAnimationEnd(Animation animation) {
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "애니메이션 종료됨", 1000).show();
}
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
}
}
[Android]프로그레스바(ProgressBar) (0) | 2012.08.26 |
---|---|
[Android]페이지 슬라이딩 사용하기 (0) | 2012.08.25 |
[Android]WebView (0) | 2012.08.18 |
[Android]Tab widget (0) | 2012.08.18 |
[Android] 단말 방향 설정 (0) | 2012.08.16 |
댓글 영역