2016-05-10 4 views
-2

Ich versuche zu verstehen, wie man einen Bildschirm lädt, während alle meine Methoden und Daten vollständig geladen werden. Ich habe bemerkt, dass Apps wie Gmail, Instagram usw. ein kleines Ladesymbol in der Mitte über Weiß haben, während der Bildschirm vollständig geladen ist, und einige meiner Daten brauchen eine Weile, um mich zu fragen, wie ich den Bildschirm in der Zwischenzeit zeigen kann einen Ladebildschirm, anstatt die Daten sichtbar zu blinken, wenn sie bereit sind.Wie wird ein Ladebildschirm angezeigt, während Daten auf Android geladen werden?

Ein Gedanke, den ich hatte, war, die gesamte Ansicht in einem relativen Layout zu umgeben und unter Last das Layout innerhalb des relativen Layouts sichtbar zu halten und dann zur anderen Ansicht zu wechseln ... Ich weiß nicht, ob das der klügste Weg ist Ich weiß, ob es eine andere effizientere Methode gibt. Ich brauche das für jeden Bildschirm zu verwenden, da es einen Anruf an die Server - Pre-Cache, auch einige Bildschirme nicht die Daten zwischenspeichern, da es keinen Sinn macht.

Lassen Sie mich wissen, ob es irgendwelche einfachen Bibliotheken oder eine modulare Technik gibt, die ich außerhalb meines XML-Layoutplans implementieren kann.

+0

Erstens, das ist kein Bildschirm. Wenn Sie mit AsyncTask arbeiten, können Sie mit dem Fortschrittsdialog den Fortschritt oder die Ladeansicht anzeigen. Überprüfen Sie dieses Dokument - http://developer.android.com/reference/android/app/ProgressDialog.html –

+0

Vollständige Anleitung ist hier. http://www.tutorialspoint.com/android/android_progressbar.htm –

+1

Ich benutze Retrofit, um die Daten zu greifen, die funktioniert Async, gibt es einen Fortschritt Dialog zur Verfügung gestellt oder eine einfache Möglichkeit, damit zu implementieren? – Lion789

Antwort

1

Erklären Sie Ihren Dialog

ProgressDialog progress; 

Wenn Sie bereit sind, den Fortschritt Dialog zu starten:

progress = ProgressDialog.show(this, "dialog title", 
"dialog message", true); 

und es zu machen weg, wenn Sie fertig sind:

progress.dismiss(); 
+1

Dank gibt es eine Möglichkeit, den gesamten Bildschirm zu maskieren, das Dialogfeld zu ändern, alles zu überlagern? - oder um eine benutzerdefinierte Ansicht dafür zu setzen? – Lion789

+0

Wenn diese Antwort Ihre Lösung bietet, akzeptieren Sie sie bitte als Lösung –

0

Das ist ziemlich viel ist es. Sie können verschiedene Aktivitäten zum Laden mit verschiedenen Layouts mit Fortschrittsbalken oder gleichen Aktivitäten mit Fortschrittsbalken verwenden.

Wenn Sie eine große Datenmenge herunterladen, aber Sie nicht warten möchten, können Sie alle Daten herunterladen und auf dem Gerät speichern. Wenn Nutzer das nächste Mal die App öffnen, zeigen Sie ihnen Daten aus gespeicherten Daten an und aktualisieren sie dann auf beiden Seiten im Hintergrund.