Добро пожаловать в пример использования 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
- ProgressBar – это вид (как TextView, ImageView, Button и т. д.), который можно использовать в макете для отображения хода выполнения какой-то задачи. ProgressBar используется для указания того, что что-то в приложении все еще загружается, в то время как пользователь может взаимодействовать с другими частями.
- ProgressDialog – это диалоговое окно с встроенным индикатором выполнения. ProgressDialog используется, когда мы хотим предотвратить взаимодействие пользователя с приложением во время ожидания. Аспект диалога замораживает возможность пользователя выполнять какие-либо действия до его закрытия
Атрибуты ProgressDialog в Android
Ниже приведены некоторые важные атрибуты ProgressDialog в Android.
- setMessage() : Этот метод используется для отображения сообщения пользователю. Пример: Загрузка…
- setTitle() : Этот метод используется для установки заголовка в диалоговом окне
- setProgressStyle(ProgressDialog.STYLE_HORIZONTAL) : Этот метод используется для отображения горизонтального индикатора выполнения в диалоговом окне
- setProgressStyle(ProgressDialog.STYLE_SPINNER) : Этот метод используется для отображения круглого/вращающегося индикатора выполнения в диалоговом окне
- setMax() : Этот метод используется для установки максимального значения
- getProgress() : Этот метод используется для получения текущего значения индикатора выполнения в числах
- getMax() : Этот метод возвращает максимальное значение индикатора выполнения
- show(Context context, CharSequence title, CharSequence message) : Это статический метод, используемый для отображения диалогового окна прогресса
- 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 по следующей ссылке.
Source:
https://www.digitalocean.com/community/tutorials/android-progressdialog-example