Android-Fortschrittsbalkenbeispiel

Beispiel für einen Android-Fortschrittsbalken

In Android ist der Fortschrittsbalken hilfreich, um dem Benutzer mitzuteilen, dass die Ausführung der Aufgabe länger dauert.

In diesem Tutorial zeigen wir Ihnen, wie Sie einen Fortschrittsbalkendialog anzeigen, um dem Benutzer mitzuteilen, dass Ihre Aufgabe ausgeführt wird, und wie Sie den Fortschrittsbalkenstatus erhöhen, bis die Aufgabe abgeschlossen ist.

Note
Ausführliche Erläuterungen finden Sie inAndroid ProgressBar JavaDoc.

P.S This project is developed in Eclipse 3.7, and tested with Android 2.3.3.

1. Fügen Sie eine Schaltfläche hinzu

Öffnen Sie die Datei "res/layout/main.xml" und fügen Sie zur Demonstration einfach die normale Schaltfläche hinzu.

Datei: res / layout / main.xml




    

2. Code Code

Der Schlüssel zur Verwendung des Fortschrittsbalkens ist die Verwendung von "Thread" zum Ausführen Ihrer Zeitverbrauchsaufgabe und eines weiteren "Thread" zum entsprechenden Aktualisieren des Fortschrittsbalkenstatus. Lesen Sie den Kommentar des Codes, er sollte selbsterklärend sein.

Datei: MyAndroidAppActivity.java

package com.example.android;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.widget.Button;
import android.view.View;
import android.view.View.OnClickListener;

public class MyAndroidAppActivity extends Activity {

    Button btnStartProgress;
    ProgressDialog progressBar;
    private int progressBarStatus = 0;
    private Handler progressBarHandler = new Handler();

    private long fileSize = 0;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        addListenerOnButton();

    }

    public void addListenerOnButton() {

        btnStartProgress = (Button) findViewById(R.id.btnStartProgress);
        btnStartProgress.setOnClickListener(
                 new OnClickListener() {

           @Override
           public void onClick(View v) {

            // prepare for a progress bar dialog
            progressBar = new ProgressDialog(v.getContext());
            progressBar.setCancelable(true);
            progressBar.setMessage("File downloading ...");
            progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            progressBar.setProgress(0);
            progressBar.setMax(100);
            progressBar.show();

            //reset progress bar status
            progressBarStatus = 0;

            //reset filesize
            fileSize = 0;

            new Thread(new Runnable() {
              public void run() {
                while (progressBarStatus < 100) {

                  // process some tasks
                  progressBarStatus = doSomeTasks();

                  // your computer is too fast, sleep 1 second
                  try {
                    Thread.sleep(1000);
                  } catch (InterruptedException e) {
                    e.printStackTrace();
                  }

                  // Update the progress bar
                  progressBarHandler.post(new Runnable() {
                    public void run() {
                      progressBar.setProgress(progressBarStatus);
                    }
                  });
                }

                // ok, file is downloaded,
                if (progressBarStatus >= 100) {

                    // sleep 2 seconds, so that you can see the 100%
                    try {
                        Thread.sleep(2000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                    // close the progress bar dialog
                    progressBar.dismiss();
                }
              }
               }).start();

               }

                });

        }

    // file download simulator... a really simple
    public int doSomeTasks() {

        while (fileSize <= 1000000) {

            fileSize++;

            if (fileSize == 100000) {
                return 10;
            } else if (fileSize == 200000) {
                return 20;
            } else if (fileSize == 300000) {
                return 30;
            }
            // ...add your own

        }

        return 100;

    }

}

P.S The "doSomeTasks" method is just a file size download simulator, just replace this method with your long running task.

3. Demo

Führen Sie die Anwendung aus.

1. Ergebnis, eine einzige Taste.

android progress bar demo1

2. Klicken Sie auf die Schaltfläche, es wird ein "Fortschrittsbalkendialog" angezeigt, um den aktuellen Download-Fortschritt anzuzeigen.

android progress bar demo2

3. Die Aufgabe ist abgeschlossen, der Fortschrittsbalken zeigt 100{}n und wird automatisch geschlossen.

android progress bar demo3

Quellcode herunterladen

Laden Sie es herunter -Android-ProgressBar-Example.zip (15 KB)