Как изменить макет диалога прогресса, когда прогресс завершен? - PullRequest
0 голосов
/ 19 января 2019

В моем расширенном классе AsyncTask есть диалог прогресса. Я установил макет в диалоге прогресса, используя setcontentview (). Я хочу изменить дизайн диалогового окна прогресса и показать его в течение 2 секунд после его завершения (т. Е. В PostExecute ()).

Я запускаю диалог Progress в onPreexecute () и закрываю его в методах onPostexecute ().

Вот как я инициализировал диалог прогресса в onPreexecute

progressDialog = ProgressDialog.show(context, null, null);
progressDialog.setContentView(R.layout.progress_meditate);
progressDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
progressDialog.setProgressDrawable(new ColorDrawable(Color.WHITE));

Я попробовал приведенный ниже код в onPostExecute

progressDialog.setContentView(R.layout.progress_complete);
sleep(2000);
progressDialog.dismiss();

но это не работает. Мой макет progress_complete не отображается. Диалог прогресса закрывается после сна с тем же дизайном.

Ответы [ 4 ]

0 голосов
/ 21 января 2019

Затем создайте два диалоговых окна прогресса, один над другим, один пропустите сначала, а другой через 2 секунды.Это будет работать

0 голосов
/ 19 января 2019

Для этого вы не можете изменить дизайн во время выполнения. Единственный возможный способ показать диалог с другим дизайном после выполнения - это создать новый диалог, закрыть предыдущий и показать новый.

0 голосов
/ 19 января 2019

Менее простым решением было бы расширить или создать собственный ProgressDialog.С другой стороны, в документации по Android вы можете найти следующие :

Внимание : Android включает в себя еще один класс диалога под названием ProgressDialog это показывает диалог с индикатором выполнения. Этот виджет устарел , поскольку он не позволяет пользователям взаимодействовать с приложением во время отображения прогресса.Если вам нужно указать загрузку или неопределенный прогресс, вы должны следовать рекомендациям по разработке для Progress & Activity и использовать ProgressBar в макете вместо использования ProgressDialog.

Я бы предложил / рекомендовал перейти наProgressBar как отправная точка решения, но это ваш вызов.

Я думаю, что было бы легче решить вашу проблему, потому что ProgressBar - это просто еще одно представление, которое может перекрываться на финише.

0 голосов
/ 19 января 2019

01. Первый шаг инициализирует progressBar и ProgressBarText

 private ProgressBar progressBar;
 private TextView progressBarText;

02. Вторым шагом объявить этот метод OnCreate

  progressBar.setVisibility(View.VISIBLE);
  progressBarText.setVisibility(View.VISIBLE);

03. Третий шаг объявить этот метод onPostExecute

  progressBar.setVisibility(View.GONE);
  progressBarText.setVisibility(View.GONE);

Вот и все. Я думаю, что это помощь для вас.

...