웹사이트 검색

Android ProgressDialog 예제


Android ProgressDialog 예제에 오신 것을 환영합니다. 이 튜토리얼에서는 ProgressBar를 포함하는 Android Progress Dialog를 만드는 방법을 배웁니다. 또한 ProgressDialog와 ProgressBar의 차이점에 대해서도 자세히 설명합니다.

Android ProgressDialog

Android ProgressDialog는 AlertDialog의 확장입니다. AlertDialog에 대한 자세한 내용은 여기에서 자습서를 확인하십시오. Android ProgressDialog는 작업의 진행 상황을 보여주는 대화 상자/대화 창입니다. Android 진행률 대화 상자는 대화 상자로 표시된다는 점을 제외하면 ProgressBar와 거의 동일합니다. ProgressBar를 표시하기 위해 ProgressDialog를 생성하려면 다음과 같이 인스턴스화해야 합니다.

ProgressDialog progress = new ProgressDialog(this);

Android ProgressDialog와 ProgressBar의 차이점

  1. ProgressBar는 일부 진행 상황을 표시하기 위해 레이아웃에서 사용할 수 있는 보기(예: TextView, ImageView, Button 등)입니다. ProgressBar는 사용자가 다른 부분과 계속 상호 작용할 수 있는 동안 tge 앱의 무언가가 여전히 로드 중임을 나타내는 데 사용됩니다.
  2. ProgressDialog는 '내장' ProgressBar가 있는 대화 상자입니다. 사용자가 기다리는 동안 응용 프로그램과 상호 작용하지 못하도록 하려면 ProgressDialog를 사용합니다. 대화 측면은 해제될 때까지 사용자가 아무 작업도 수행하지 못하게 합니다.

안드로이드 ProgressDialog 속성

Android ProgressDialog의 몇 가지 중요한 속성은 다음과 같습니다.

  1. setMessage() : 이 메서드는 사용자에게 메시지를 표시하는 데 사용됩니다. 예: 로드 중...
  2. setTitle() : 이 메서드는 대화 상자에 제목을 설정하는 데 사용됩니다.
  3. setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) : 이 메서드는 대화 상자에 가로 진행률 표시줄을 표시하는 데 사용됩니다.
  4. setProgressStyle(ProgressDialog.STYLE_SPINNER) : 이 메서드는 대화 상자에 원/회전 진행률 표시줄을 표시하는 데 사용됩니다.
  5. setMax() : 이 메서드는 최대값을 설정하는 데 사용됩니다.
  6. getProgress() : 이 메서드는 현재 진행률 값을 숫자로 가져오는 데 사용됩니다.
  7. getMax() : 이 메서드는 진행률의 최대값을 반환합니다.
  8. show(Context context, CharSequence title, CharSequence message) : 진행률 대화 상자를 표시하는 데 사용되는 정적 메서드입니다.
  9. incrementProgressBy(int diff) : 이 메서드는 매개변수로 전달된 값의 차이만큼 진행률 표시줄을 증가시킵니다.

이 자습서에서는 200밀리초마다 증가하는 수평 ProgressBar가 포함된 ProgressDialog를 표시하는 애플리케이션을 개발할 것입니다.

Android ProgressDialog 프로젝트 구조

Android ProgressDialog 예제

activity_main.xml에는 아래 xml 코드와 같이 클릭 시 ProgressDialog를 호출하는 버튼이 포함되어 있습니다. activity_main.xml

<RelativeLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text=" Start ProgressDialog"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="57dp" />

</RelativeLayout>

MainActivity.java 파일은 다음과 같습니다. MainActivity.java

package com.journaldev.progressdialog;

import android.app.ProgressDialog;
import android.os.Handler;
import android.os.Message;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    Button button;
    ProgressDialog progressDoalog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button = (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                progressDoalog = new ProgressDialog(MainActivity.this);
                progressDoalog.setMax(100);
                progressDoalog.setMessage("Its loading....");
                progressDoalog.setTitle("ProgressDialog bar example");
                progressDoalog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                progressDoalog.show();
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            while (progressDoalog.getProgress() <= progressDoalog
                                    .getMax()) {
                                Thread.sleep(200);
                                handle.sendMessage(handle.obtainMessage());
                                if (progressDoalog.getProgress() == progressDoalog
                                        .getMax()) {
                                    progressDoalog.dismiss();
                                }
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }

            Handler handle = new Handler() {
                @Override
                public void handleMessage(Message msg) {
                    super.handleMessage(msg);
                    progressDoalog.incrementProgressBy(1);
                }
            };
        });
    }
}

다음 코드는 진행률 표시줄을 증가시키는 코드를 작성하는 핸들러를 활성화합니다.

handle.sendMessage(handle.obtainMessage());

Android ProgressDialog 프로젝트 다운로드