반응형
안드로이드(Android) 스레드를 이용하여 애니메이션 구현하기 |
개발환경 : window 7 64bit, Eclipse Mars, Android 4.2.2 |
Runnable 인터페이스로 스레드를 만들어서 사용하는 간단한 방법에 대해서 알아보았는데 이 소스를 이용해 이미지가 돌아가는 애니메이션을 구현해 봅니다. |
Activity 가 시작되는 함수 onStart() 에서 스레드
객체를 만들어서 run() 함수를 구현합니다.
run 에는 스레드가 돌면서 핸들에 sendMessage()
사용해 이벤트를 발생시킵니다.
@Override protected void onStart() { super.onStart(); Thread myThread = new Thread(new Runnable() { public void run() { while (true) { try { handler.sendMessage(handler.obtainMessage()); Thread.sleep(1000); } catch (Throwable t) { } } } }); myThread.start(); }
run 함수에서 발생시킨 이벤트를 Handler 객체의
handleMessage 함수에서 메시지를 받아 처리 합니다.
Handler handler = new Handler() { @Override public void handleMessage(Message msg) { updateThread(); } };
매번 발생할 때 마다 updateThread() 함수가
실행되게 되는데 이 함수 안에는 4개의 이미지를
번갈아 가면서 보여줍니다.
이 이미지들은 동그라미들인데 방향이 다 틀려서
4가지 이미지를 차례로 로딩하면 한바뀌 도는 것
같이 보일 겁니다. 이게 중요한 것이 아니라
스레드를 이용해서 이미지들을 바꿔서 애니메이션
효과를 얻었다는 것이죠.
private void updateThread() { int mod = i % 4; switch (mod) { case 0: i++; imageView.setImageResource(R.drawable.images01); break; case 1: i++; imageView.setImageResource(R.drawable.images02); break; case 2: i++; imageView.setImageResource(R.drawable.images03); break; case 3: i = 0; imageView.setImageResource(R.drawable.images04); break; } myi.setText(String.valueOf(i)); }
전체 activity 소스는 다음과 같습니다.
import android.app.Activity; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.widget.ImageView; import android.widget.TextView; public class SampleActivity11 extends Activity { private int i = 0; private TextView myi; private ImageView imageView; Handler handler = new Handler() { @Override public void handleMessage(Message msg) { updateThread(); } }; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sample_activity11); myi = (TextView) findViewById(R.id.i); imageView = (ImageView) findViewById(R.id.myImageView); } @Override protected void onStart() { super.onStart(); Thread myThread = new Thread(new Runnable() { public void run() { while (true) { try { handler.sendMessage(handler.obtainMessage()); Thread.sleep(1000); } catch (Throwable t) { } } } }); myThread.start(); } private void updateThread() { int mod = i % 4; switch (mod) { case 0: i++; imageView.setImageResource(R.drawable.images01); break; case 1: i++; imageView.setImageResource(R.drawable.images02); break; case 2: i++; imageView.setImageResource(R.drawable.images03); break; case 3: i = 0; imageView.setImageResource(R.drawable.images04); break; } myi.setText(String.valueOf(i)); } }
반응형
'안드로이드 개발' 카테고리의 다른 글
안드로이드(Android) ListActivity 로 구현한 목록에 애니메이션 적용하기 (0) | 2014.10.30 |
---|---|
안드로이드(Android) ListActivity 를 이용하여 목록페이지 만들기 (1) | 2014.10.29 |
안드로이드(Android) 레이아웃에 애니메이션 기능을 이용해 시각효과 주기 (0) | 2014.10.29 |
안드로이드(Android) AnimationDrawable 이용하여 애니메이션 만들기 (0) | 2014.10.28 |
안드로이드(Android) 간단한 스레드 사용법과 숫자값 올리기 (0) | 2014.10.27 |
안드로이드(Android) 아날로그 시계의 시간을 음성(TTS) 으로 알려주기 (3) | 2014.10.27 |
안드로이드(Android) 간단하게 TTS(Text-To-Speech) 구현하기 (8) | 2014.10.26 |
안드로이드(Android) WebView 브라우저기능중 URL 이동바 구현 (0) | 2014.10.26 |