Ich bin rübergekommen, um zu sehen, dass ProgressDialog
das jetzt veraltet ist. Was würde alternative sein anstatt dass abgesehen davon , zu verwenden ProgressBar
. Ich benutze Android Studio Version 2.3.3.
ProgressDialog progressDialog=new ProgressDialog(this);
progressDialog.show();
android
progressdialog
android-progressbar
Sunil P.
quelle
quelle
Antworten:
Ja,
API level 26
es ist veraltet. Stattdessen können Sie verwendenprogressBar
.So erstellen Sie es programmgesteuert:
Holen Sie sich zuerst einen Verweis auf das Root-Layout
oder
Fügen Sie dann den Fortschrittsbalken hinzu
Anzeigen des Fortschrittsbalkens
So blenden Sie den Fortschrittsbalken aus
Um die Benutzerinteraktion zu deaktivieren, müssen Sie nur den folgenden Code hinzufügen
Um die Benutzerinteraktion wiederherzustellen, müssen Sie nur den folgenden Code hinzufügen
Ändern Sie zum späteren Nachschlagen das
android.R.attr.progressBarStyleSmall
inandroid.R.attr.progressBarStyleHorizontal
.Der folgende Code funktioniert nur oben
API level 21
So erstellen Sie es über XML:
In Ihrer Tätigkeit
Das Ein- und Ausblenden des Fortschrittsbalkens ist dasselbe
Hier ist ein Beispielbild, wie es aussehen würde:
Für weitere Details:
1. Referenz eins
2. Referenz zwei
quelle
Sie können
AlertDialog
wieProgressDialog
unten angegeben Code für die verwendenProgressDialog
. Diese Funktion müssen Sie aufrufen, wenn Sie einen Fortschrittsdialog anzeigen.Code:
Ausgabe:
quelle
AlertDialog
sollte hier nicht verwendet werden.Es ist
Android O
aufgrund desGoogle
neuen UI-Standards veraltetquelle
Sie können einfach eine XML-Oberfläche für Ihren Fortschrittsbalken entwerfen und diese als Ansicht an einen AlertDialog übergeben. Anschließend können Sie den Dialog jederzeit anzeigen oder schließen.
progress.xml
Der Codecode, der den Fortschrittsdialog anzeigt. Kopieren Sie einfach diesen Code und fügen Sie ihn in Ihr Fragment ein.
Rufen Sie dann einfach die Methode auf, wann immer Sie den Fortschrittsdialog anzeigen möchten, und übergeben Sie true als Argument, um ihn anzuzeigen, oder false, um den Dialog zu schließen.
quelle
this
, damit es so aussieht.AlertDialog.Builder builder = new AlertDialog.Builder(this);
Bitte stellen Sie sicher, dass Sie den richtigen Code kopieren.layout_toEndOf
kann entfernt werden, da nicht fürLinearLayout
ProgressBar ist sehr einfach und benutzerfreundlich. Ich beabsichtige, dies genauso wie einen einfachen Fortschrittsdialog zu machen. Der erste Schritt besteht darin, dass Sie ein XML-Layout des Dialogfelds erstellen können, das Sie anzeigen möchten. Nehmen wir an, wir nennen dieses Layout
Der nächste Schritt ist das Erstellen eines AlertDialogs, der dieses Layout mit ProgressBar anzeigt
Jetzt müssen Sie nur noch diesen Dialog in unseren Klickereignissen wie diesem ein- und ausblenden
und das ist es, es sollte funktionieren, wie Sie sehen können, ist es sehr einfach und leicht, ProgressBar anstelle von ProgressDialog zu implementieren. Jetzt können Sie dieses Dialogfeld entweder in Handler oder in ASyncTask anzeigen / schließen, je nach Bedarf
quelle
progress_dialog.show();
zubuilder.show();
. Danke dir.show()
/dismiss()
, aber ich habe es nicht gesetzt,builder.show()
weil wir dann, um es zu verwerfen, etwas tun müssten,dialog.dismiss()
was für jemanden verwirrend ist, der seinen Code einfach und leicht verständlich halten möchte , und auch Dabuilder.show()
dasAlertDialog
Objekt zurückgegeben wird und wir diese Referenz wieAlertDialog dialog = builder.show();
damals speichern müssendialog.dismiss()
, ist es einfacher, diebuilder.create()
Rückgabe in einemAlertDialog
Objekt zu haben und dieses Objekt dann zum Ein- und Ausblenden des Dialogs zu verwendenJa, ProgressDialog ist veraltet, Dialog jedoch nicht.
Sie können Ihre eigene XML - Datei (mit einem Fortschrittsbalken und eine Lade Text) in das Dialog - Objekt aufzublasen und dann ein- oder ausblenden es die Verwendung
show()
unddismiss()
Funktionen. Hier ist ein Beispiel (Kotlin):ProgressDialog-Klasse :
XML
In Ihrem Code : Tun Sie es einfach
var dialog = ProgressDialog.progressDialog(context)
Zeigen:
dialog.show()
Verstecken:
dialog.dismiss()
quelle
Wenn Sie wirklich gegen ihren Willen vorgehen möchten , können Sie dennoch den Sweet Alert Dialog verwenden oder einen eigenen erstellen.
Java-Code:
quelle
HideProgress
tut nichts.ProgressBar ist die beste Alternative für ProgressDialog. Ein Benutzeroberflächenelement, das den Fortschritt einer Operation anzeigt.
Weitere Informationen finden Sie in diesem Google-Dokument: https://developer.android.com/reference/android/widget/ProgressBar.html
quelle
Sie müssen keine benutzerdefinierte Bibliothek importieren.
Ich bevorzuge die moderne Version,
AlertDialog
daher ist dies die Kotlin- Version für die großartige Antwort, die Kishan Donga auf dieser Seite veröffentlicht hat.Kotlin-Code:
Verwendung:
Ausgabe:
quelle
view!!.context
Wie auf der genannten Dokumentationsseite die Alternative ist
ProgressBar
.ProgressDialog
Das Aussehen kann durch Platzieren einesProgressBar
in einem repliziert werdenAlertDialog
.Sie können es weiterhin verwenden, aber Android möchte nicht, dass Sie es verwenden. Deshalb ist es veraltet. Sie sollten also in Betracht ziehen, Ihr Problem auf eine andere Weise zu lösen, z. B. durch Einbetten eines
ProgressBar
in Ihr ProblemLayout
.quelle
bezieht sich auf Funktionen oder Elemente, die gerade durch neuere ersetzt werden."Deprecated"
Vorteil
Ich würde persönlich sagen, dass
ProgressBar
das den Vorteil gegenüber den beiden hat.ProgressBar
ist ein Benutzeroberflächenelement, das den Fortschritt einer Operation anzeigt. Zeigen Sie einem Benutzer unterbrechungsfrei Fortschrittsbalken an . Zeigen Sie den Fortschrittsbalken in der Benutzeroberfläche Ihrer App an.quelle
Ich verwende DelayedProgressDialog von https://github.com/Q115/DelayedProgressDialog. Es funktioniert genauso wie ProgressDialog mit dem zusätzlichen Vorteil einer Verzögerung, falls erforderlich.
Die Verwendung ähnelt ProgressDialog vor Android O:
quelle
Gradle-Setup
Fügen Sie module / build.gradle die folgende Abhängigkeit hinzu:
Wie benutzt man es?
Die Verwendung ähnelt dem ursprünglichen ProgressDialog
NB : Sie müssen die Aktivitäten überschreiben
onBackPressed()
Java8-Implementierung:
Kotlin Implementierung:
quelle
Vielleicht könnte Ihnen dieser Leitfaden helfen.
Normalerweise ziehe ich es vor, benutzerdefinierte AlertDialogs mit Indikatoren zu erstellen. Es löst Probleme wie die Anpassung der App-Ansicht.
quelle
Es kann anderen Menschen helfen.
Viele beliebte Apps haben einen anderen Ansatz, um den Fortschritt von Netzwerkanforderungen, Laden von Dateien usw. anzuzeigen. Beim Laden des Spinners wird nicht angezeigt, wie viel Inhalt geladen wurde oder noch geladen werden muss. Es gibt eine Zeit der Unsicherheit, die aus Sicht von UI / UX schlecht ist. Viele beliebte Apps (Facebook, Linkedin usw.) haben dieses Problem behoben, indem zuerst die Bare-Bones-Benutzeroberfläche angezeigt wurde. Anschließend wird der geladene Inhalt nach und nach auf dem Bildschirm angezeigt.
Ich habe den Schimmer für meine Apps verwendet, um dieses Problem zu lösen.
Es gibt einen guten Artikel darüber, der für andere Menschen von Vorteil sein wird
quelle
Im Fortschrittsdialog kann der Benutzer keine Arbeit verrichten. Alle Hintergrundprozesse werden während des Fortschrittsdialogs gestoppt. Es ist daher ratsam, den Fortschrittsbalken anstelle des Fortschrittsdialogs zu verwenden.
quelle
Sie können SpotDialog mithilfe der Bibliothek wasabeef verwenden. Das vollständige Tutorial finden Sie unter folgendem Link:
quelle