반응형
안드로이드(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(); } }; }
반응형
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) 체크박스(checkbox) 체크여부 판단 샘플 예제 (0) | 2014.10.30 |
---|---|
안드로이드(Android) ListActivity 로 구현한 목록에 애니메이션 적용하기 (0) | 2014.10.30 |
안드로이드(Android) ListActivity 를 이용하여 목록페이지 만들기 (1) | 2014.10.29 |
안드로이드(Android) 레이아웃에 애니메이션 기능을 이용해 시각효과 주기 (0) | 2014.10.29 |
안드로이드(Android) 스레드를 이용하여 애니메이션 구현하기 (0) | 2014.10.28 |
안드로이드(Android) 간단한 스레드 사용법과 숫자값 올리기 (0) | 2014.10.27 |
안드로이드(Android) 아날로그 시계의 시간을 음성(TTS) 으로 알려주기 (3) | 2014.10.27 |
안드로이드(Android) 간단하게 TTS(Text-To-Speech) 구현하기 (8) | 2014.10.26 |