Please Enable JavaScript!
Gon[ Enable JavaScript ]

안드로이드(Android) AnimationDrawable 이용하여 애니메이션 만들기

안드로이드 개발
반응형
안드로이드(Android) AnimationDrawable 이용하여 애니메이션 만들기

 

개발환경 : window 7 64bit, Eclipse Mars, Android 4.2.2

 

이전에는 Runnable 스레드를 이용하여 애니메이션을
만들었는데 이번에는 안드로이드에서 지원하는 클래스
AnimationDrawable 을 이용해서 만들어 보도록 합니다.

 

아래 화면에서 시작을 누르게 되면 애니메이션이 시작되게 되고 종료를 누르면 끝납니다. AnimationDrawable에서 제공하는 함수로 간단하게 기능을 구현한 것이죠.

 

먼저 res/drawable 에 애니메이션 이미지리스트 xml 만듭니다. 그리고 item 들을 추가합니다. Android:duration 의 값은 밀리세컨입니다. 각각의 이미지가 정지해 있는 시간을 설정할수 있는 것입니다

 

arrow_animation.xml

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" >      <item         android:drawable="@drawable/images01"         android:duration="100"/>     <item         android:drawable="@drawable/images02"         android:duration="100"/>     <item         android:drawable="@drawable/images03"         android:duration="100"/>     <item         android:drawable="@drawable/images04"         android:duration="100"/>  </animation-list> 

 

 

애니메이션을 돌리기 위한 xml 을 추가하였다면 AnimationDrawable 변수를 만들고 이미지를 표현할 ImageView Drawable 객체를 리턴받아 AnimationDrawable저장합니다. Drawable View 의 백그라운드에 작업을 할수 있는객체 입니다.

 

ImageView imageView = (ImageView) findViewById(R.id.myImageView); imageView.setBackgroundResource(R.drawable.arrow_animation); aniFrame = (AnimationDrawable) imageView.getBackground(); 

 

다음은 시작, 종료 버튼의 이벤트를 등록합니다. 시작에는 AnimationDrawable start() 함수를,종료에는 AnimationDrawable stop() 함수를 넣습니다.

 

Button.OnClickListener startBtnOnClickListener = new Button.OnClickListener() { 	public void onClick(View v) { 		aniFrame.start(); 	} };  Button.OnClickListener stopBtnOnClickListener = new Button.OnClickListener() { 	public void onClick(View v) { 		aniFrame.stop(); 	} }; 

 

메인 activity 의 레이아웃 xml 입니다.

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"     android:layout_width="fill_parent"     android:layout_height="fill_parent"     android:orientation="vertical" >      <TextView         android:layout_width="fill_parent"         android:layout_height="wrap_content"         android:text="AnimationDrawable 이용한 애니메이션" />      <Button         android:id="@+id/myStartButton"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:text="시작" />      <Button         android:id="@+id/myStopButton"         android:layout_width="match_parent"         android:layout_height="wrap_content"         android:text="종료" />      <ImageView         android:id="@+id/myImageView"         android:layout_width="wrap_content"         android:layout_height="wrap_content"         android:layout_gravity="center" />  </LinearLayout> 

 

메인 activity 의 전체 소스입니다.

import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView;  public class SampleActivity14 extends Activity {  	private AnimationDrawable aniFrame;  	/** Called when the activity is first created. */ 	@Override 	public void onCreate(Bundle savedInstanceState) { 		super.onCreate(savedInstanceState); 		setContentView(R.layout.activity_sample_activity14);  		Button startButton = (Button) findViewById(R.id.myStartButton); 		startButton.setOnClickListener(startBtnOnClickListener); 		Button stopButton = (Button) findViewById(R.id.myStopButton); 		stopButton.setOnClickListener(stopBtnOnClickListener);  		ImageView imageView = (ImageView) findViewById(R.id.myImageView); 		imageView.setBackgroundResource(R.drawable.arrow_animation); 		aniFrame = (AnimationDrawable) imageView.getBackground(); 	}  	Button.OnClickListener startBtnOnClickListener = new Button.OnClickListener() { 		public void onClick(View v) { 			aniFrame.start(); 		} 	};  	Button.OnClickListener stopBtnOnClickListener = new Button.OnClickListener() { 		public void onClick(View v) { 			aniFrame.stop(); 		} 	};  } 

 

 

반응형
Posted by 녹두장군1
,