Android – показывает неопределенный прогресс, без диалога
Я хочу показать свою панель прогресса в центре экрана, когда обработка происходит при нажатии кнопки. Но я просто хочу progressbar без диалогового windows.
Есть ли способ сделать это?
- Является ли устаревшее слово единственной разницей между fill_parent и match_parent
- Скользящий навигационный ящик не обрабатывает клики по пунктам меню android
- Какова основная цель методов setTag () getTag () View?
- Разница между android.app.Fragment и android.support.v4.app.Fragment
- Переопределение кнопки «Главная» - как мне избавиться от выбора?
- java.lang.NoClassDefFoundError: com.google.android.gms.internal.zzmp
- Уведомления с несколькими линиями в Интернете, такие как приложение Gmail
- Как просмотреть файл Realm в браузере Realm?
- Одновременное использование нескольких AsyncTasks - невозможно?
- динамически обновлять список с помощью адаптера
- Лучшие практики: макеты на Android (Programmatic vs XML)
- NetworkOnMainThreadException
- Как передать данные от 2-го действия до 1-го действия при нажатии? - Андроид
Это полностью объяснено в ApiDemos внутри SDK. Пример, который вы хотите, называется: ProgressBar3.java и может быть найден в \ ApiDemos \ src \ com \ example \ android \ apis \ view \
Кроме того, если вы хотите удалить границы диалогового windows, чтобы отобразить только индикатор выполнения, вы можете определить сам диалог как прозрачный вид / оверлей (это также объясняется в примерах).
Если вам не нужен диалог, просто поместите 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); }
Это простая версия, все сделано в streamе пользовательского интерфейса, но это должно быть легко адаптироваться, если вы используете асинхронную задачу или обработчики streamов. Просто покажите, спрячьте и опубликуйте любые обновления в диалоговом окне, пока вы находитесь в streamе пользовательского интерфейса, и выполняйте свою долговременную задачу в фоновом режиме.
@reflog: Это не то, что нужно. Думаю.
@lostInTransit:
Правильный способ достижения этого заключается в следующем:
- Создать собственный диалог
- Положите индикатор выполнения как только просмотр в диалоговом окне
- Установить фоновое окно диалогового windows
- Показать диалог.
Вот и все. Он работает для меня на устройствах с 1,5 до 2,1. Не пробовал 2.2.
-Yogesh
Ответ @Jesse Finnerty решил мою проблему. что я сделал:
private ProgressBar mprogressBar;
Внутренний oncreate (), как и другие кнопки и текстовые изображения, которые я сделал, mprogressBar = (ProgressBar) findViewById (R.id.progressBar);
Тогда в точке я хочу, чтобы вращающееся колесо появилось, я даю команду
mprogressBar.setVisibility(View.VISIBLE);
в точке, где я хочу, чтобы она исчезла.
mprogressBar.setVisibility(View.INVISIBLE);
На самом деле это происходит при переключении. так что, когда состояния в моей программе меняются, индикатор выполнения появляется и исчезает
Существует отличный пример того, что предлагает Йогеш:
Как легко центрировать индикатор прогресса в ProgressDialog (когда заголовок / текст не передавался)
Кредит отправляется на Macarse для его публикации.