안드로이드 어플리케이션을 개발하면서 ProgressDialog를 쓰게 된다.
대부분 로딩화면에서 이 다이얼로그를 사용하는데, 매우 기초적인 다이얼로그의 경우, 작업이 끝나도 dismiss를 통한 수동 종료를 해주어야 하는 식으로 작업한다.
이럴 경우, 간단한 것에는 큰 문제가 없지만 로딩시 몇개의 개체가 불려왔는지에 대한 각종 부분을 보여주기 위해서는 thread를 통한 제어가 필요하다는 것이다.
뭐 여튼, 간단명료하게 설명을 해 보겠다.
ProgressDialog(); // ProgressDialog 호출
이 부분은 ProgressDialog를 호출하는 부분이다.
onCreate에 선언하여 로딩시 쓸 수도 있고, OnClickListener에 선언하여 클릭시 로딩 등에서도 사용이 가능하다.
나의 경우에는 아래와 같이 선언하였다.
@Override public void onClick(View v) { String attendance; switch (v.getId()) { case R.id.btnReSign: ProgressDialog(); // 진행바 호출 myView.reset(); break; } finish(); }
그럼 ProgressDialog();의 부분을 보자.
private ProgressDialog SaveUserSign; // Loading Dialog void ProgressDialog() { /* ProgressDialog */ SaveUserSign = ProgressDialog.show(this, "김생선 어플", "저장중입니다.", true, false); Thread thread = new Thread(new Runnable() { public void run() { // 처리할 부분 handler.sendEmptyMessage(0); } }); thread.start(); }
ProgressDialog이 SaveUserSign이란 이름으로 호출이 되고, SaveUserSign은 ProgressDialog를 .show에 주어진 메시지로 출력이 된다.
그리고 Thread를 통하여 주석에 위치한 처리할 부분을 처리하고, 이 작업이 끝나면 handler를 호출한다.
나의 경우, 주석의 위치에 사람들의 서명부분을 저장하고 서버로 올리는 작업을 추가했다.
마지막으로 종료를 위한 handler부분을 살펴보자.
private Handler handler = new Handler() { public void handleMessage(Message msg) { SaveUserSign.dismiss(); // 다이얼로그 삭제 // View갱신 } };
handler부분은 SaveUserSign의 다이얼로그를 dismiss 해준다는 내용이 가장 크다.
그 외에 큰 어려움은 없으니 조금만 살펴보고 연구하면 다음엔 더 쉽게 구현할 수 있을 것 같다.
AsyncTask 방법을 사용하는 것도 있다는데... 흐미...
'어장 Develop > 어장 Android' 카테고리의 다른 글
공지사항 dialog (2) | 2012.09.26 |
---|---|
[Android] addview를 사용할 때의 위치설정 (0) | 2012.08.08 |
listview와 intent (0) | 2011.03.16 |
listview (0) | 2011.03.12 |