Пример диалогового окна ожидания Android

Добро пожаловать в пример использования Android ProgressDialog. В этом руководстве мы научимся создавать диалоговое окно прогресса Android, содержащее ProgressBar. Также мы подробно обсудим различия между ProgressDialog и ProgressBar.

Android ProgressDialog

Android ProgressDialog является расширением AlertDialog. Чтобы узнать больше об AlertDialog, посмотрите учебное пособие здесь. Android ProgressDialog – это диалоговое окно, которое показывает ход выполнения задачи. Прогресс-диалог Android практически такой же, как ProgressBar, за исключением того, что он отображается в виде диалогового окна. Для создания ProgressDialog для отображения ProgressBar мы должны создать его экземпляр таким образом.

ProgressDialog progress = new ProgressDialog(this);

Разница между Android ProgressDialog и ProgressBar

  1. ProgressBar – это вид (как TextView, ImageView, Button и т. д.), который можно использовать в макете для отображения хода выполнения какой-то задачи. ProgressBar используется для указания того, что что-то в приложении все еще загружается, в то время как пользователь может взаимодействовать с другими частями.
  2. ProgressDialog – это диалоговое окно с встроенным индикатором выполнения. ProgressDialog используется, когда мы хотим предотвратить взаимодействие пользователя с приложением во время ожидания. Аспект диалога замораживает возможность пользователя выполнять какие-либо действия до его закрытия

Атрибуты ProgressDialog в Android

Ниже приведены некоторые важные атрибуты ProgressDialog в Android.

  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): Этот метод увеличивает полосу прогресса на разницу значения, переданного в качестве параметра

В этом учебном пособии мы разработаем приложение, которое отображает диалоговое окно ProgressDialog, содержащее горизонтальную полосу прогресса, которая увеличивается каждые 200 миллисекунд.

Структура проекта Android ProgressDialog

Пример Android ProgressDialog

Файл activity_main.xml содержит кнопку, которая вызывает диалоговое окно ProgressDialog при нажатии, как показано в коде xml ниже: 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 в эмуляторе Android. Этим завершается руководство по примеру Android ProgressDialog. Вы можете загрузить окончательный Проект Android ProgressDialog по следующей ссылке.

Скачать проект Android ProgressDialog

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