728x90
블로그 이사했습니다!
👇 블로그 이전 공지 👇
👇 새 블로그에서 글 보기 👇
[Android] Thread - 이미지 바꾸기 — Win Record (tistory.com)
Runnable 인터페이스로 이미지 변경하기
코드 흐름 :
ImageRunnable클래스 생성
(handler를 사용해 2초마다 이미지 변경)
↓
start 버튼 클릭
↓
ImageRunnable를 가진 thread 생성 및 실행(start())
↓
thread 실행되며 1초마다 숫자 1씩 증가
↓
stop 버튼 클릭
↓
thread 중지(intterupt())
이미지 추가하기
Resource Manager의 Vector Asset을 사용해 Drawable 추가
이미지 변경하기
이미지 아이디 배열 활용하여 Runnable 생성
class ImageRunnable implements Runnable {
int[] images = {R.drawable.ic_twotone_ac_unit_24, R.drawable.ic_twotone_brightness_4_24,
R.drawable.ic_twotone_bug_report_24, R.drawable.ic_twotone_catching_pokemon_24,
R.drawable.ic_twotone_policy_24};
Handler handler = new Handler();
boolean hasImageAlready = (ivImage.getDrawable() != null);
@Override
public void run() {
while (true) {
if (hasImageAlready) {
// 시작하기 전 이미지뷰에 이미 이미지가 있으면 2초 있다가 다음 이미지로 변경하기
try {
Thread.sleep(1000 * 2);
} catch (InterruptedException e) {
e.printStackTrace();
return;
}
hasImageAlready = false;
}
Log.d("image runnable", "image index: " + index);
handler.post(new Runnable() {
@Override
public void run() {
ivImage.setImageResource(images[index]);
}
});
index++;
if (index == images.length) index = 0;
try {
Thread.sleep(1000 * 2);
} catch (InterruptedException e) {
e.printStackTrace();
return;
}
}
}
}
start, stop 버튼 클릭 메소드
@SuppressLint("NonConstantResourceId")
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn_image_start:
btnStart.setVisibility(View.GONE);
btnStop.setVisibility(View.VISIBLE);
if (thread == null)
thread = new Thread(new ImageRunnable());
thread.start();
break;
case R.id.btn_image_stop:
btnStart.setVisibility(View.VISIBLE);
btnStop.setVisibility(View.GONE);
thread.interrupt();
thread = null;
break;
...
}
}
결과화면
전체 코드
이전 글
다음 글
공부하며 정리한 글입니다. 내용에 대한 피드백은 언제나 환영입니다.
'android' 카테고리의 다른 글
[error]Cloud FireStore: documentSnapshot.toObject() error (0) | 2021.01.25 |
---|---|
Thread - 텍스트 변경하기 (0) | 2021.01.22 |
Thread - 화면 변경하기(초시계) (0) | 2021.01.22 |
SharedPreferences ArrayList 저장하기 (0) | 2021.01.21 |
SharedPreferences 객체 저장하기 (0) | 2021.01.16 |
댓글