Android-ProgressBar-Nachricht ändern, wenn Prozent geladen ist

Ich versuche zu Nachricht hinzufügen, wenn die progress bar lädt auf einen bestimmten Prozent. Also, wenn 10 Prozent geladen ist, einen Titel oder eine Nachricht angezeigt, dass etwas geladen wird.
Ich kann es tun und es zu zwingen, zu schließen.
Irgendwelche Ideen, wie es zu tun.

Unten ist mein Beispielcode

  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();
        //getWindow().requestFeature(Window.FEATURE_INDETERMINATE_PROGRESS);

        //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++;
        setProgressBarIndeterminate(true);
        if (fileSize == 100000) {
            progressBar.setMessage("10 percent loaded");
            return 10;
        } else if (fileSize == 200000) {
            progressBar.setMessage("20 percent loaded");
            return 20;
        } else if (fileSize == 300000) {
            progressBar.setMessage("30 percent loaded");
            return 30;
        }
        //...add your own

    }

    return 100;

}

Dank StackOverFlow-Benutzer

  • Sollte man wirklich wechseln, um mithilfe der AsyncTask, es bietet eine bessere Schnittstelle für den Umgang mit dieser Art von Problemen.
InformationsquelleAutor Androyds | 2012-09-19
Schreibe einen Kommentar