Przekonałem się, że ProgressDialog
jest to już nieaktualne. Co byłoby alternatywne zamiast tego ProgressBar
. Używam Androida Studio w wersji 2.3.3.
ProgressDialog progressDialog=new ProgressDialog(this);
progressDialog.show();
android
progressdialog
android-progressbar
Sunil P.
źródło
źródło
Odpowiedzi:
Tak,
API level 26
jest przestarzałe. Zamiast tego możesz użyćprogressBar
.Aby utworzyć programowo:
Najpierw zapoznaj się z układem głównym
lub
Następnie dodaj pasek postępu
Aby wyświetlić pasek postępu
Aby ukryć pasek postępu
Aby wyłączyć interakcję użytkownika, wystarczy dodać następujący kod
Aby odzyskać interakcję użytkownika, wystarczy dodać następujący kod
Tylko dla odniesienia w przyszłości, należy zmienić
android.R.attr.progressBarStyleSmall
sięandroid.R.attr.progressBarStyleHorizontal
.Poniższy kod działa tylko powyżej
API level 21
Aby go utworzyć za pomocą xml:
W twojej działalności
Wyświetlanie / ukrywanie paska postępu jest takie samo
Oto przykładowy obraz tego, jak by to wyglądało:
Aby uzyskać więcej informacji:
1. Referencja pierwsza
2. Referencja druga
źródło
możesz użyć
AlertDialog
jakoProgressDialog
patrz poniżej kod dlaProgressDialog
. Tę funkcję musisz wywołać za każdym razem, gdy wyświetli się okno dialogowe postępu.Kod:
Wynik:
źródło
AlertDialog
nie powinno się go tutaj używać.Jest przestarzałe ze
Android O
względu naGoogle
nowy standard interfejsu użytkownikaźródło
Możesz po prostu zaprojektować interfejs XML dla paska postępu i przekazać go jako widok do AlertDialog, a następnie wyświetlić lub zamknąć okno dialogowe w dowolnym momencie.
progress.xml
Kod kodu wyświetlający okno dialogowe postępu. Po prostu skopiuj ten kod i wklej go we fragmencie.
Następnie po prostu wywołaj metodę za każdym razem, gdy chcesz pokazać progressdialog i przekazać true jako argument, aby go pokazać, lub false, aby zamknąć okno dialogowe.
źródło
this
, aby wyglądała następująco.AlertDialog.Builder builder = new AlertDialog.Builder(this);
Upewnij się, że kopiujesz odpowiedni kod.layout_toEndOf
można usunąć, ponieważ nie dlaLinearLayout
Pasek postępu jest bardzo prosty i łatwy w użyciu, zamierzam zrobić to samo, co proste okno dialogowe postępu. Pierwszym krokiem jest to, że możesz utworzyć układ xml okna dialogowego, które chcesz pokazać, powiedzmy, że nazywamy ten układ
następnym krokiem jest utworzenie AlertDialog, który pokaże ten układ za pomocą ProgressBar
teraz pozostaje tylko pokazać i ukryć to okno dialogowe w naszych zdarzeniach związanych z kliknięciem
i to wszystko, powinno działać, jak widać, jest to bardzo proste i łatwe do wdrożenia ProgressBar zamiast ProgressDialog. teraz możesz pokazać / odrzucić to okno dialogowe w module obsługi lub ASyncTask, zależnie od potrzeb
źródło
progress_dialog.show();
nabuilder.show();
. Dziękuję Ci.show()
/dismiss()
, ale nie włączyłem,builder.show()
ponieważ wtedy, aby go odrzucić, musielibyśmy zrobić,dialog.dismiss()
co jest trochę mylące dla kogoś, kto lubi zachować swój kod prosty i łatwy do zrozumienia, a także ponieważbuilder.show()
zwracaAlertDialog
obiekt, a my będziemy musieli zapisać to odwołanie tak jakAlertDialog dialog = builder.show();
wtedydialog.dismiss()
, łatwiej jestbuilder.create()
zwrócić w jakimśAlertDialog
obiekcie, a następnie użyć tego obiektu, aby wyświetlić i ukryć okno dialogoweTak, ProgressDialog jest przestarzały, ale Dialog nie.
Możesz nadmuchać własny plik XML (zawierający pasek postępu i ładujący tekst) do obiektu okna dialogowego, a następnie wyświetlić lub ukryć go za pomocą funkcji
show()
idismiss()
. Oto przykład (Kotlin):Klasa ProgressDialog :
XML
W twoim kodzie : po prostu zrób
var dialog = ProgressDialog.progressDialog(context)
Pokazywać:
dialog.show()
Ukryć:
dialog.dismiss()
źródło
Cóż, jeśli naprawdę chcesz postępować wbrew ich woli, nadal możesz użyć Sweet Alert Dialog lub stworzyć go samodzielnie.
Kod Java:
źródło
HideProgress
nic nie robi.ProgressBar jest najlepszą alternatywą dla ProgressDialog. Element interfejsu użytkownika wskazujący postęp operacji.
Aby uzyskać więcej informacji, zobacz ten dokument Google: https://developer.android.com/reference/android/widget/ProgressBar.html
źródło
Nie musisz importować żadnej niestandardowej biblioteki.
Wolę korzystać z nowoczesnego,
AlertDialog
więc jest to wersja Kotlin dla świetnej odpowiedzi opublikowanej przez Kishana Dongę na tej stronie.Kod Kotlin:
Stosowanie:
Wynik:
źródło
view!!.context
Jak wspomniano na stronie dokumentacji, alternatywą jest
ProgressBar
.ProgressDialog
Wygląd można replikować, umieszczając plikProgressBar
wAlertDialog
.Nadal możesz go używać, ale Android nie chce, abyś go używał, dlatego jest przestarzały. Dlatego powinieneś rozważyć rozwiązanie swojego problemu w inny sposób, na przykład osadzenie a
ProgressBar
w swoimLayout
.źródło
odnosi się do funkcji lub elementów, które są w trakcie zastępowania nowszymi."Deprecated"
Korzyść
Osobiście powiedziałbym, że
ProgressBar
ma przewagę nad tymi dwoma.ProgressBar
to element interfejsu użytkownika, który wskazuje postęp operacji. Wyświetlaj paski postępu użytkownikowi bez przerywania pracy . Pokaż pasek postępu w interfejsie aplikacji.źródło
Używam DelayedProgressDialog z https://github.com/Q115/DelayedProgressDialog Robi to samo co ProgressDialog z dodatkową korzyścią opóźnienia, jeśli to konieczne.
Korzystanie z niego jest podobne do ProgressDialog przed Androidem O:
źródło
Konfiguracja stopniowa
Dodaj następującą zależność do module / build.gradle:
Jak tego użyć?
Użycie jest podobne do oryginalnego ProgressDialog
NB : Musisz zastąpić aktywność
onBackPressed()
Implementacja Java8:
Realizacja Kotlin:
źródło
Może ten przewodnik może ci pomóc.
Zwykle wolę tworzyć niestandardowe AlertDialogs ze wskaźnikami. Rozwiązuje takie problemy, jak dostosowywanie widoku aplikacji.
źródło
Może to pomóc innym ludziom.
Wiele popularnych aplikacji ma różne podejście do pokazywania postępów takich jak żądanie sieciowe, ładowanie plików itp. Ładowanie spinner nie pokazuje, ile treści zostało załadowane lub pozostało do załadowania. Jest okres niepewności, który jest zły w perspektywie UI / UX. Wiele popularnych aplikacji (Facebook, Linkedin itp.) Rozwiązało ten problem, wyświetlając najpierw interfejs użytkownika z odkrytymi kośćmi. Następnie ładowana zawartość jest stopniowo wypełniana na ekranie.
Użyłem migotania do moich aplikacji, aby rozwiązać ten problem.
Jest dobry artykuł na ten temat, który będzie korzystny dla innych ludzi
źródło
W oknie dialogowym postępu użytkownik nie może wykonywać żadnej pracy. Wszystkie procesy w tle są zatrzymywane podczas okna dialogowego postępu. Dlatego wskazane jest, aby pasek postępu użytkownika zamiast okna postępu.
źródło
Możesz użyć SpotDialog , korzystając z biblioteki wasabeef pełny samouczek można znaleźć pod następującym linkiem:
źródło