안드로이드 어플리케이션을 개발하면서 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
블로그 이미지

김생선

세상의 모든것을 어장관리

,