본문 바로가기

Android/Dialog

안드로이드/Android "잠시만 기다려 주세요." ProgressDialog 띄우기

안드로이드/Android "잠시만 기다려 주세요." ProgressDialog 띄우기

▒ ▒  ▒  ▒  ▒  ▒  ▒  전체 소스 입니다. ▒ ▒  ▒  ▒  ▒  ▒  ▒ 
package arabiannight.tistory.com;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;

public class TestProgressDialogActivity extends Activity {

	private Handler mHandler;
	private ProgressDialog mProgressDialog;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		
		mHandler = new Handler();

		runOnUiThread(new Runnable()
		{
			@Override
			public void run()
			{
				mProgressDialog = ProgressDialog.show(TestProgressDialogActivity.this,"", 
						"잠시만 기다려 주세요.",true);
				mHandler.postDelayed( new Runnable()
				{
					@Override
					public void run()
					{
						try
						{
							if (mProgressDialog!=null&&mProgressDialog.isShowing()){
								mProgressDialog.dismiss();
							}
						}
						catch ( Exception e )
						{
							e.printStackTrace();
						}
					}
				}, 3000);
			}
		} );
	}
}


▒ ▒  ▒  ▒  ▒  ▒  ▒  Detail 설명 입니다. ▒ ▒  ▒  ▒  ▒  ▒  ▒


▒  ProgressDialog 

 ProgressDialog는 어떠한 작업을 할 시에 User로 부터의 입력을 제한 하기 위해 사용 할 수 있습니다.
예를들어 개발자 입장에서 1~100까지의 숫자가 증가하는 동안 User로 부터의 이벤트를 제한 하고 싶을 경우에,
Dialog의 특성을 이용해서
(다이얼로그가 isShowing() 상태일 경우 다이얼로그 종료 전까지는 다른 작업을 수행할 수 없음.)
User로 부터의 이벤트를 제한 할 수 있습니다.
또한 이런 의도의 사용 말고도 다른 곳에 응용 하여 사용 할 수 있습니다.

 
▒ 1.

ProgressDialog를 제어 해줄 Handler를 생성 합니다.
메인 핸들러를 사용하기 위해서는 Main Class에서 핸들러를 생성 해야 합니다.
private Handler mHandler;

mHandler = new Handler();


▒ 2. 
ProgressDialog를 생성 하는 부분 입니다.
Context, Title , String , Indeterminate 부분으로 인자가 나눠져 있습니다. 해당 인자에 맡게
값을 넣어 주시면 됩니다.
mProgressDialog = ProgressDialog.show(TestProgressDialogActivity.this,"", 
                        "잠시만 기다려 주세요.",true);



▒ 3. 
runOnUiThread를 사용하여 UI를 변경하는 작업인 ProgressDialog를 띄워주고 있습니다.
runOnUiThread는 메인 Thread 내에서 UI를 직접 컨트롤 할 수 있게 제공되고 있는 아주 편리한 UI쓰레드 입니다.

그리고 3초 후에 핸들러가 ProgressDialog가 null이 아니고 show 상태일 경우에 Dialog를 종료 시켜 줍니다.
runOnUiThread(new Runnable()
        {
            @Override
            public void run()
            {
                mProgressDialog = ProgressDialog.show(TestProgressDialogActivity.this,"", 
                        "잠시만 기다려 주세요.",true);
                mHandler.postDelayed( new Runnable()
                {
                    @Override
                    public void run()
                    {
                        try
                        {
                            if (mProgressDialog!=null&&mProgressDialog.isShowing()){
                                mProgressDialog.dismiss();
                            }
                        }
                        catch ( Exception e )
                        {
                            e.printStackTrace();
                        }
                    }
                }, 3000);
            }
        } );


▒ 파일링크 & 스크린 샷