Android - показывает неопределенный прогресс, без диалога
Я хочу показать свою панель прогресса в центре экрана, когда обработка происходит при нажатии кнопки. Но я просто хочу progressbar без диалогового окна.
Можно ли мне это сделать?
Ответы
Ответ 1
Это полностью объяснено в ApiDemos внутри SDK.
Пример, который вы хотите, называется: ProgressBar3.java и может быть найден в \ApiDemos\src\com\example\android\apis\view\
Кроме того, если вы хотите удалить границы диалогового окна, чтобы отобразить только индикатор выполнения, вы можете определить сам диалог как прозрачный вид/оверлей (это также объясняется в примерах).
Ответ 2
Если вам не нужен диалог, просто поместите 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
@reflog:
Это не то, что нужно, я думаю.
@lostInTransit:
Правильный способ достижения этого заключается в следующем:
- Создайте собственный диалог
- Положите индикатор выполнения как только просмотр в диалоговом окне
- Установить прозрачность диалогового окна
- Показать диалог.
Что это. Он работает для меня на устройствах с 1,5 до 2,1. Не пробовали на 2.2.
-Yogesh
Ответ 4
Ответ @Jesse Finnerty решил мою проблему.
что я сделал:
private ProgressBar mprogressBar;
Внутри oncreate(), как и другие кнопки и текстовые изображения, которые я сделал, mprogressBar = (ProgressBar) findViewById (R.id.progressBar);
Тогда в точке я хочу, чтобы вращающееся колесо появилось, я даю команду
mprogressBar.setVisibility(View.VISIBLE);
в точке, где я хочу, чтобы она исчезла.
mprogressBar.setVisibility(View.INVISIBLE);
Это находится под переключателем. так что, когда состояния в моей программе меняются, индикатор выполнения появляется и исчезает
Ответ 5
Существует отличный пример того, что предлагает Yogesh:
Как легко центрировать индикатор прогресса в ProgressDialog (когда заголовок/текст не передавался)
Кредит отправляется на Macarse для его публикации.