WedX - журнал о программировании и компьютерных науках

О диалоговом окне прогресса Android. Избегать?

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

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

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

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


Ответы:


1

Изменить: в Android O ProgressDialog теперь официально объявлен устаревшим< /а>. Предлагается альтернативный подход

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


Исходный ответ:

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

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

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

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

16.01.2014
  • Я понимаю что ты имеешь ввиду. Спасибо за Ваш ответ! 16.01.2014
  • @HongWeiWang Нет проблем. Кроме того, я не вижу смысла создавать собственный Dialog, имитирующий ProgressDialog. Как я уже сказал, в его использовании нет ничего плохого. 16.01.2014
  • Что ж, если я настрою его, я смогу добавить больше материала во всплывающее окно. 16.01.2014
  • @HongWeiWang Это правда. Имейте в виду, однако, что независимо от того, используете ли вы ProgressBarDialog или клон, предупреждение документа о том, чтобы избегать таких диалогов (что является темой вопроса, и на которое я ответил), все еще применяется. 16.01.2014
  • ProgressDialog устарел в O. 28.03.2017
  • @caffinatedmonkey Спасибо, обновил ответ, чтобы отразить это 29.03.2017

  • 2

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

    Применение:

    DelayedProgressDialog progressDialog = new DelayedProgressDialog();
    progressDialog.show(getSupportFragmentManager(), "tag");
    
    17.09.2017
    Новые материалы

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..


    Для любых предложений по сайту: [email protected]