Ich verwende derzeit in meiner Anwendung eine Listenansicht, für deren Anzeige möglicherweise eine Sekunde benötigt wird.
Derzeit verwende ich die Eigenschaft @ id / android: empty der Listenansicht, um einen "Lade" -Text zu erstellen.
<TextView android:id="@id/android:empty"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FF0000"
android:text="Loading..."/>
Jetzt möchte ich das durch den animierten Kreis ersetzen, der in einem Ladedialog anstelle dieses Textes verwendet wird. Ich denke, Sie alle wissen, was ich meine:
Bearbeiten: Ich möchte keinen Dialog. Ich möchte das in meinem Layout zeigen.
Vielen Dank für Ihre Hilfe!
android
loading
android-asynctask
geometry
Waza_Be
quelle
quelle
Sie können dies tun, indem Sie die folgende XML verwenden
Mit diesem Stil
Um dies zu verwenden, müssen Sie Ihre UI-Elemente ausblenden, indem Sie den Sichtbarkeitswert auf GONE setzen. Wenn die Daten geladen werden, rufen Sie
setVisibility(View.VISIBLE)
alle Ihre Ansichten auf, um sie wiederherzustellen. Vergessen Sie nicht anzurufenfindViewById(R.id.loadingPanel).setVisiblity(View.GONE)
, um die Ladeanimation auszublenden.Wenn Sie kein Ladeereignis / keine Ladefunktion haben, aber nur möchten, dass das Ladefeld nach x Sekunden verschwindet, verwenden Sie einen Griff , um das Ausblenden / Anzeigen auszulösen.
quelle
findViewById(...).setVisibility(View.GONE)
Zeile, wenn ich den Bildschirm drehe . Funktioniert wie ein Zauber in einer Ausrichtung, aber eine Idee, warum dies brechen könnte?findViewById(R.id.loadingPanel).setVisiblity(View.GONE)
in die zweite Aktivität einfügen ? Es kann das nicht finden,view
da essetContnetView()
in der 2. Fragmentaktivität keine Methode gibt . Vielen Dank!Dies wird allgemein als unbestimmter Fortschrittsbalken oder unbestimmter Fortschrittsdialog bezeichnet.
Kombinieren Sie dies mit einem Thread und einem Handler , um genau das zu erhalten, was Sie wollen. Es gibt eine Reihe von Beispielen, wie dies über Google oder hier auf SO gemacht werden kann. Ich würde wärmstens empfehlen, sich die Zeit zu nehmen, um zu lernen, wie man diese Kombination von Klassen verwendet, um eine solche Aufgabe auszuführen. Es ist unglaublich nützlich für viele Arten von Anwendungen und gibt Ihnen einen großartigen Einblick in die Zusammenarbeit von Threads und Handlern.
Ich werde Ihnen zeigen, wie das funktioniert:
Das Ladeereignis startet den Dialog:
Jetzt macht der Thread die Arbeit:
Holen Sie sich schließlich den Status aus dem Thread zurück, wenn er abgeschlossen ist:
quelle
Wenn Sie keine andere Ansicht aufblasen möchten, um den Fortschritt anzuzeigen, gehen Sie wie folgt vor:
Android sorgt für die Sichtbarkeit des Fortschrittsbalkens.
Zum Beispiel in
activity_main.xml
:Und in
MainActivity.java
:}}
quelle
Sie können diesen Code aus Firebase-Github-Beispielen verwenden .
Sie müssen keine Layoutdateien bearbeiten. Erstellen Sie einfach eine neue Klasse "BaseActivity".
In Ihrer Aktivität möchten Sie den Fortschrittsdialog verwenden.
Vor / nach der Funktion, die Zeit braucht
quelle
Für diejenigen, die sich in Kotlin entwickeln, gibt es eine süße Methode, die von der Anko- Bibliothek bereitgestellt wird und die das Anzeigen
ProgressDialog
zum Kinderspiel macht!Basierend auf diesem Link:
Daraufhin wird ein Fortschrittsdialog mit dem angezeigten Fortschritt% angezeigt (für den Sie den
init
Parameter auch übergeben müssen, um den Fortschritt zu berechnen).Es gibt auch die
indeterminateProgressDialog()
Methode, die die Spinning Circle-Animation auf unbestimmte Zeit bereitstellt, bis sie entlassen wird:Rufen Sie diesen Blog an, der mich zu dieser Lösung geführt hat.
quelle