wake-up-neo.com

android-Ladekreis (Spinner) zwischen zwei Aktivitäten

Ich habe eine Hauptaktivität, die über einfache Tasten und Zuhörer verfügt. Jede Schaltfläche öffnet eine neue Aktivität (Absicht). Beim Öffnen der Aktivität dauert das Laden jedoch einige Zeit, was zu einem Einfrieren der Benutzeroberfläche führt. Ich möchte dies vermeiden, indem Sie einfach einen Ladekreis (Spinner) dazwischen einfügen. Ich habe viele Beiträge gesucht, aber nichts gefunden.

Mit dem Laden des Kreises meine ich das

 image

8
anil.e

Das ist ein Progress Bar . Sie können dies programmgesteuert oder mithilfe des Widgets in XML erstellen.

Um in XML zu implementieren:

<ProgressBar
    Android:id="@+id/progress_loader"
    style="?android:attr/progressBarStyle"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_centerInParent="true"
    Android:visibility="visible" />

Um in Java zu implementieren (mit einem Progress Dialog , wie Sie in Kommentaren gefragt haben, können Sie dies aber auch mit dem Progress Bar tun)

 ProgressDialog nDialog;
 nDialog = new ProgressDialog(Login.this);
 nDialog.setMessage("Loading..");
 nDialog.setTitle("Get Data");
 nDialog.setIndeterminate(false);
 nDialog.setCancelable(true);
 nDialog.show();

Bevor Sie eine nächste Aktivität erreichen, sollten Sie die Fortschrittsleiste dismiss() verwenden.

  nDialog.dismiss();
15
Parama Sudha

Verwenden Sie einfach den folgenden Code in der zweiten Aktivität

<ProgressBar
    Android:id="@+id/progress_loader"
    style="?android:attr/progressBarStyle"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_centerInParent="true"
    Android:visibility="visible" />

wenn Sie mit dem Initialisieren fertig sind, ist die Sichtbarkeit verschwunden

1
Suhaib Roomy

Versuchen Sie dies zu tun

ProgressDialog progressDoalog;

progressDoalog = new ProgressDialog(DetailsActivity.this);
        progressDoalog.setMax(100);
        progressDoalog.setMessage("Please wait...");
        progressDoalog.setTitle("My Application");
        progressDoalog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDoalog.show();
        final Handler handle = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                super.handleMessage(msg);
                progressDoalog.incrementProgressBy(1);
            }
        };
new Thread(new Runnable() {
                    @Override
                    public void run() {
                        try {
                            while (progressDoalog.getProgress() <= progressDoalog
                                    .getMax()) {
                                Thread.sleep(30);
                                handle.sendMessage(handle.obtainMessage());
                                if (progressDoalog.getProgress() == progressDoalog
                                        .getMax()) {
                                    progressDoalog.dismiss();
                                }
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
0
Bhaskara Arani

Sie können das Einfrieren der Benutzeroberfläche nicht vermeiden, indem Sie ein Lade-Widget hinzufügen. Sie müssen den Code finden, der Ihren Haupt-Thread blockiert, und ihn in einen Worker-Thread verschieben. Siehe "Helfer-Klassen für das Einfädeln" in der Android-Dokumentation . Wenn Sie Ihren vorhandenen Code nicht anzeigen (damit wir wissen, was blockiert), können wir Sie nicht weiter beraten.

Zweitens: Wenn Sie ein Lade-Widget zwischen Ansichtstransaktionen anzeigen möchten, können Sie Ihre Anwendung unter Verwendung von fragmente umstrukturieren. Eine Aktivität kann verwendet werden, um zwischen Ihren Fragmenten zu wechseln, und sie kann auch das Widget enthalten, das sichtbar gemacht werden kann, bevor Fragmente geändert werden, und ist nach Abschluss unsichtbar.

0
Charlie