상세 컨텐츠

본문 제목

[Android]간단한 애니메이션 사용

Android 개발

by mobile 2012. 8. 25. 01:13

본문

반응형

▶ 간단한 애니메이션 사용하기

안드로이드에서는 트윈 애니메이션(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 개발' 카테고리의 다른 글

[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

관련글 더보기

댓글 영역