2016-06-10 2 views
0

Ich habe eine App, bei der eine Aktion des Benutzers manchmal dazu führt, dass die App Daten vom Server abruft, bevor sie angezeigt werden kann, z. B. Detailinformationen für ein Objekt (die Informationen sind zu groß, um sie für alle Elemente zu laden) oder Aktualisieren alle Daten.Wie lautet die Best Practice/Richtlinie zum Anzeigen einer "Bitte warten" -Nachricht in Android?

Während dieser Prozess möchte ich nicht, dass der Benutzer etwas anderes tut. Was ist die Richtlinie, um eine "Bitte warten" Nachricht anzuzeigen? Im Idealfall sollte es dem Benutzer möglich sein, die Anfrage abzubrechen, wenn er möchte.

Ich kann es mit einem Warndialog tun, aber die Operation dauert in der Regel nur eine halbe Sekunde zu einer Sekunde, und es sieht wirklich seltsam für einen Alarmdialog erscheint nur für einen Moment, vielleicht nicht einmal lang genug in der Lage sein, die Nachricht zu lesen.

Eine andere Option, die ich sehe, ist die Snack-Bar, aber es hindert den Benutzer nicht daran, irgendetwas anderes zu tun oder zu navigieren.

Gibt es eine Richtlinie oder Best Practice, was in diesem Szenario zu tun ist?

Ich benutze Xamarin.Android, aber ich denke nicht, dass das eine Rolle spielt.

+0

Fragen Sie nach "wie Code" oder "was soll angezeigt werden"? – BornToCode

+0

"was angezeigt werden soll" und wenn möglich welche Klassen das entsprechende UI-Element repräsentieren. Ich kann wahrscheinlich herausfinden, die Details von "wie Code", und wenn nicht, ich werde eine neue Frage stellen, aber das ist wirklich über "was angezeigt werden sollte" – Naryoril

Antwort

0

Sie können einen Ladekreis an der Stelle anzeigen, an dem der geladene Inhalt wie this angezeigt wird. Wenn dies abgeschlossen ist, ersetzen Sie den Ladekreis durch den Inhalt.

Eigentlich "ich möchte nicht, dass der Benutzer etwas anderes tut" ist in den meisten Android-Entwurfsmustern nicht akzeptabel. Android App sollte es dem Benutzer ermöglichen, die Kontrolle über die App zu übernehmen.

Zum Abbrechen der Anforderung können Sie eine Schaltfläche zum Abbrechen in der Nähe des Ladekreises hinzufügen oder ein Kreuz im Kreis hinzufügen, das den Vorgang beim Drücken stoppt. Letzteres ist bevorzugt.

Weitere Muster siehe this.

über Fortschrittsdialog

Soweit ich weiß, Fortschritt Dialog, der die Benutzer-Interaktion blockieren wird in dem neuen Android abgeraten. Aber es tut mir leid, dass ich die Referenz noch nicht finden kann, vielleicht irgendwo in Material Design Richtlinien dokumentieren. Da Sie jedoch der Entwickler sind, liegt es ganz bei Ihnen: D.

+0

Er fragt nicht nach den Widgets/Ansichten, sondern eine beste Möglichkeit Fortschrittsbalken anzeigen, wenn lange Aufgaben ausgeführt werden! –

+1

Ja, ich erkläre die beste Anzeige. Er fragte nach der Richtlinie, und ich stelle den Link zur Verfügung. Warum downvoted? :/ – BornToCode

+0

Eigentlich mag ich diesen Ansatz für mindestens einen Teil meiner Fälle. Jetzt bekomme ich die Daten aus dem Netz und öffne dann eine neue Aktivität. Es ist wahrscheinlich besser, die neue Aktivität zu öffnen, nur mit einem Drehfeld zu leeren und dann die Diagramme und die Daten anzuzeigen, wenn die Daten fertig sind. Für die vollständige Datenaktualisierung (die auch den Benutzer zurück zum Einstiegspunkt/Startbildschirm der App bringt) werde ich wahrscheinlich einen ProgressDialog verwenden. – Naryoril

0

Überprüfen Sie die documentation auf AsyncTask.

ich tun würde, zeigen die lange laufende Aufgabe in einem AsyncTask, ein ProgressDialog darin onPreExecute Methode ist und es verstecken, nachdem sie, finised in onPostExecute.

Um zu verhindern, dass der Benutzer den Dialog schließt, können Sie die Methode Dialog.setCancelable() verwenden.

Sie können ein benutzerdefiniertes Layout für Ihre Dialog definieren und über die Methode setContentView() festlegen.

Verwandte Themen