안드로이드 ProgressDialog 예제에 오신 것을 환영합니다. 이 튜토리얼에서는 ProgressBar가 포함된 안드로이드 Progress Dialog를 만드는 방법에 대해 알아보겠습니다. 또한 ProgressDialog와 ProgressBar의 차이점에 대해 자세히 논의하겠습니다.
안드로이드 ProgressDialog
안드로이드 ProgressDialog는 AlertDialog의 확장입니다. AlertDialog에 대해 더 알아보려면 여기에서 해당 튜토리얼을 확인하십시오. 안드로이드 ProgressDialog는 작업의 진행 상황을 보여주는 대화 상자/대화 창입니다. 안드로이드 Progress Dialog는 ProgressBar와 거의 동일하지만 대화 상자로 표시됩니다. ProgressBar를 표시하기 위해 ProgressDialog를 생성하려면 다음과 같이 인스턴스화해야 합니다.
ProgressDialog progress = new ProgressDialog(this);
안드로이드 ProgressDialog와 ProgressBar의 차이점
- ProgressBar는 레이아웃에서 사용할 수 있는 View(TextView, ImageView, Button 등)로, 어떤 것이 아직 로드 중인지를 나타내는 데 사용됩니다. ProgressBar는 사용자가 다른 부분과 상호 작용할 수 있는 동안 앱이 아직 로딩 중임을 나타내는 데 사용됩니다.
- ProgressDialog는 ‘내장’ ProgressBar가 있는 대화 상자입니다. ProgressDialog는 사용자가 대기하는 동안 응용 프로그램과 상호 작용하지 못하도록 하기 위해 사용됩니다. 대화 상자 측면은 대화 상자가 해제될 때까지 사용자가 아무 것도 할 수 없도록 합니다
Android ProgressDialog 속성
Android ProgressDialog의 몇 가지 중요한 속성은 다음과 같습니다.
- setMessage() : 이 메소드는 사용자에게 메시지를 표시하는 데 사용됩니다. 예: 로딩 중…
- setTitle() : 이 메소드는 대화 상자에 제목을 설정하는 데 사용됩니다
- setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) : 이 메소드는 대화 상자에 수평 진행 막대를 표시하는 데 사용됩니다
- setProgressStyle(ProgressDialog.STYLE_SPINNER) : 이 메소드는 대화 상자에 원형/회전하는 진행 막대를 표시하는 데 사용됩니다
- setMax() : 이 메소드는 최대 값 설정에 사용됩니다
- getProgress() : 이 메소드는 현재 진행 값(숫자)을 가져오는 데 사용됩니다
- getMax() : 이 메소드는 진행의 최대 값 반환합니다
- show(Context context, CharSequence title, CharSequence message) : 이는 정적 메소드로, 진행 대화 상자를 표시하는 데 사용됩니다
- 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 프로젝트를 다운로드할 수 있습니다.
Source:
https://www.digitalocean.com/community/tutorials/android-progressdialog-example