반응형
|
안드로이드(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 |
