프로그레스바 (ProgressBar) 는 로딩상황 표시나 혹은 미디어 재생등에 사용되기 때문에 일반적으로 쓰레드 (Thread)를 통해서 구현해주는게 일반입니다.
이번 예제에서는 화면에 ProgressBar 하나 생성하여, 0 ~ 100% 까지의 값을 왕복하며 표시해주는 것을 쓰레드로 구현해보았습니다.
1. ProgressBar.setProgress(int) 로 표시
2. Thread를 사용하여 화면 뷰에 표시하기 위해선 Handler 객체 꼭 필요
3. Handler.post() 의 run() 구현
[메인액티비티 소스]
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 | public class MainActivity extends ActionBarActivity { Handler handler = new Handler(); // Thread 에서 화면에 그리기 위해서 필요 int value = 0; // progressBar 값 int add = 1; // 증가량, 방향 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 앱시작시, Thread 를 시작해서 ProgressBar 를 증가시키기 // Thread 내부에서 화면에 작업을 하려면 Handler 를 사용해야한다 final ProgressBar pb = (ProgressBar) findViewById(R.id.progressBar1); Thread t = new Thread(new Runnable() { @Override public void run() { // Thread 로 작업할 내용을 구현 while(true) { value = value + add; if (value>=100 || value<=0) { add = -add; } handler.post(new Runnable() { @Override public void run() { // 화면에 변경하는 작업을 구현 pb.setProgress(value); } }); try { Thread.sleep(100); // 시간지연 } catch (InterruptedException e) { } } // end of while } }); t.start(); // 쓰레드 시작 } // end of onCreate } // end of class | cs |
[실행결과]
SSISO Community