Android - показывать неопределенный индикатор выполнения без диалога - PullRequest
19 голосов
/ 01 апреля 2009

Я хочу показать мой индикатор в центре экрана, когда обработка происходит по нажатию кнопки. Но я просто хочу индикатор выполнения без диалогового окна ..

Есть ли способ, которым я могу это сделать?

Ответы [ 5 ]

23 голосов
/ 01 апреля 2009

Это полностью объясняется в ApiDemos внутри SDK. Пример, который вам нужен, называется: ProgressBar3.java, его можно найти в \ ApiDemos \ src \ com \ example \ android \ apis \ view \

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

22 голосов
/ 03 мая 2011

Если вам не нужно диалоговое окно, просто поместите progressBar в свой макет, как и любой другой элемент представления, и установите видимость «INVISIBLE» или даже «GONE» по умолчанию.

Затем просто покажите его, когда вам нужно, изменив его на «VISIBLE», используя setVisibility в вашем коде, и снова скройте его, когда задача будет выполнена, снова сделав «INVISIBLE» или «GONE».

, например

MyTask {

// get handle on ProgressBar ViewItem defined in XML (id:progressBar)

ProgressBar progressBar = findViewById(R.id.progressBar);


//starting task, show progress bar

progressBar.setVisibility(View.VISIBLE);


// Do some stuff... 


//task done, hide it again

progressBar.setVisibility(View.GONE);

}

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

3 голосов
/ 09 сентября 2010

@ reflog: Думаю, это не то, что нужно.

@ lostInTransit:

Правильный способ достижения этого заключается в следующем:

  1. Создать свой собственный диалог
  2. Поместить индикатор выполнения в качестве единственного представления в диалоговом окне
  3. Установить фон диалогового окна прозрачным
  4. Показать диалоговое окно.

Вот и все. У меня работает на устройствах с 1.5 до 2.1. Не пробовал на 2.2.

-Yogesh

2 голосов
/ 25 июня 2011

Ответ @Jesse Finnerty решил мою проблему. то, что я сделал, было:

private ProgressBar mprogressBar;

Внутри oncreate (), как и другие кнопки и текстовые представления, которые я сделал, mprogressBar = (ProgressBar) findViewById (R.id.progressBar);

Затем, когда я хочу, чтобы появилось вращающееся колесо, я даю команду

mprogressBar.setVisibility(View.VISIBLE);

в точке, где я хочу, чтобы она исчезла.

mprogressBar.setVisibility(View.INVISIBLE);

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

1 голос
/ 07 октября 2010

Есть отличный пример того, что предлагает Йогеш, по адресу:

Как легко центрировать индикатор прогресса в ProgressDialog (когда заголовок / текст не передается)

Кредит отправляется в Macarse для публикации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...