안드로이드(Android) 스레드를 이용하여 애니메이션 구현하기 :: 안드로이드 설치 및 개발[SSISO Community]
 
SSISO 카페 SSISO Source SSISO 구직 SSISO 쇼핑몰 SSISO 맛집
추천검색어 : JUnit   Log4j   ajax   spring   struts   struts-config.xml   Synchronized   책정보   Ajax 마스터하기   우측부분

안드로이드 설치 및 개발
[1]
등록일:2018-10-16 13:45:04 (0%)
작성자:
제목:안드로이드(Android) 스레드를 이용하여 애니메이션 구현하기

Runnable 인터페이스로 스레드를 만들어서 사용하는

간단한 방법에 대해서 알아보았는데 이 소스를 이용해

이미지가 돌아가는 애니메이션을 구현해 봅니다.


 

Activity 가 시작되는 함수 onStart() 에서 스레드

객체를 만들어서 run() 함수를 구현합니다.

run 에는 스레드가 돌면서 핸들에 sendMessage()

사용해 이벤트를 발생시킵니다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@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 함수에서 메시지를 받아 처리 합니다.

 

1
2
3
4
5
6
7
Handler handler = new Handler() {
 
    @Override
    public void handleMessage(Message msg) {
        updateThread();
    }
};

 

매번 발생할 때 마다 updateThread() 함수가

실행되게 되는데 이 함수 안에는 4개의 이미지를

번갈아 가면서 보여줍니다.

이 이미지들은 동그라미들인데 방향이 다 틀려서

4가지 이미지를 차례로 로딩하면 한바뀌 도는 것

같이 보일 겁니다. 이게 중요한 것이 아니라

스레드를 이용해서 이미지들을 바꿔서 애니메이션

효과를 얻었다는 것이죠.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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 소스는 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
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));
    }
}

 

 



출처: http://mainia.tistory.com/1118 [녹두장군 - 상상을 현실로]
[본문링크] 안드로이드(Android) 스레드를 이용하여 애니메이션 구현하기
[1]
코멘트(이글의 트랙백 주소:/cafe/tb_receive.php?no=34880
작성자
비밀번호

 

SSISOCommunity

[이전]

Copyright byCopyright ⓒ2005, SSISO Community All Rights Reserved.