Android ProgressDialog 예제

안드로이드 ProgressDialog 예제에 오신 것을 환영합니다. 이 튜토리얼에서는 ProgressBar가 포함된 안드로이드 Progress Dialog를 만드는 방법에 대해 알아보겠습니다. 또한 ProgressDialog와 ProgressBar의 차이점에 대해 자세히 논의하겠습니다.

안드로이드 ProgressDialog

안드로이드 ProgressDialog는 AlertDialog의 확장입니다. AlertDialog에 대해 더 알아보려면 여기에서 해당 튜토리얼을 확인하십시오. 안드로이드 ProgressDialog는 작업의 진행 상황을 보여주는 대화 상자/대화 창입니다. 안드로이드 Progress Dialog는 ProgressBar와 거의 동일하지만 대화 상자로 표시됩니다. ProgressBar를 표시하기 위해 ProgressDialog를 생성하려면 다음과 같이 인스턴스화해야 합니다.

ProgressDialog progress = new ProgressDialog(this);

안드로이드 ProgressDialog와 ProgressBar의 차이점

  1. ProgressBar는 레이아웃에서 사용할 수 있는 View(TextView, ImageView, Button 등)로, 어떤 것이 아직 로드 중인지를 나타내는 데 사용됩니다. ProgressBar는 사용자가 다른 부분과 상호 작용할 수 있는 동안 앱이 아직 로딩 중임을 나타내는 데 사용됩니다.
  2. ProgressDialog는 ‘내장’ ProgressBar가 있는 대화 상자입니다. ProgressDialog는 사용자가 대기하는 동안 응용 프로그램과 상호 작용하지 못하도록 하기 위해 사용됩니다. 대화 상자 측면은 대화 상자가 해제될 때까지 사용자가 아무 것도 할 수 없도록 합니다

Android 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밀리초마다 증가하는 수평 프로그레스 바를 포함하는 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());

아래는 안드로이드 진행 대화상자 예제 응용 프로그램을 안드로이드 에뮬레이터에서 실행할 때의 출력 비디오입니다. 이것으로 안드로이드 ProgressDialog 예제 튜토리얼이 종료됩니다. 아래 링크에서 최종 안드로이드 ProgressDialog 프로젝트를 다운로드할 수 있습니다.

안드로이드 ProgressDialog 프로젝트 다운로드

Source:
https://www.digitalocean.com/community/tutorials/android-progressdialog-example