it-swarm.com.ru

О Android Диалог прогресса. Избегайте?

Я читал о диалогах на сайте Android и ​​наткнулся на раздел, в котором говорилось: "Избегайте ProgressDialog".

Вот ссылка: http://developer.Android.com/guide/topics/ui/dialogs.html

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

Означает ли это, что я должен создать свой собственный Progress Dialog, используя класс ProgressBar? Как можно было бы построить это между прочим? Любая помощь приветствуется.

19
Hong Wei Wang

Редактировать: С Android O теперь ProgressDialog официально не рекомендуется . Альтернативой является подход, предложенный

Этот класс устарел на уровне API O. Используйте индикатор прогресса, такой как ProgressBar, встроенный внутри действия, а не используйте этот модальный диалог.


Оригинальный ответ:

Это все с точки зрения дизайна и взаимодействия с пользователем, а не с точки зрения кода.

Рекомендации по пользовательскому интерфейсу советуют вам избегать использования ProgressDialog не потому, что класс устарел (это не на момент написания этого ответа), а скорее потому, что он заставляет пользователя избегать взаимодействия с приложением и просто смотрит на экран.

Возьмите приложение Google Play в качестве примера. Пока оно загружает приложение/обновление, вы все равно можете проводить пальцем по экрану, перемещаться и т.д. Вы по-прежнему можете участвовать в приложении, пока оно что-то делает.

Если вам абсолютно необходимо, чтобы пользователь прекратил взаимодействие до тех пор, пока индикатор выполнения не завершится, обязательно сделайте это. В документах просто говорится, что вы можете найти лучшие способы сделать это (отсюда и ссылка на Progress & Activity ).

38
A--C

Поскольку ProgressDialog устарела в Android O. Вы должны создать ProgressBar и показать его, установив его видимость. Я использую DelayedProgressDialog из https://github.com/Q115/DelayedProgressDialog Он делает то же самое, что и ProgressDialog с дополнительным преимуществом задержки при необходимости.

Использование:

DelayedProgressDialog progressDialog = new DelayedProgressDialog();
progressDialog.show(getSupportFragmentManager(), "tag");
0
NinjaCowgirl