Пример индикатора выполнения Android

В Android индикатор выполнения полезен, чтобы сообщить пользователю, что выполнение задачи занимает больше времени.

В этом руководстве мы покажем вам, как отобразить диалоговое окно индикатора выполнения, чтобы сообщить пользователю, что ваша задача выполняется, а также как повысить статус индикатора выполнения, пока задача не будет завершена.

P.S Этот проект разработан в Eclipse 3.7 и протестирован с Android 2.3.3.

1. Добавить кнопку

Откройте файл « res/layout/main.xml », просто добавьте обычную кнопку для демонстрации.

File: res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout__width="fill__parent"
    android:layout__height="fill__parent"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btnStartProgress"
        android:layout__width="wrap__content"
        android:layout__height="wrap__content"
        android:text="Download File"/>

</LinearLayout>

2. Кодекс

Ключом к использованию индикатора выполнения является использование «Thread» для запуска задачи использования времени и еще один «Thread» для соответствующего обновления состояния индикатора выполнения. Прочитайте комментарий к коду, он должен быть понятен.

File: MyAndroidAppActivity.java

package com.mkyong.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 Метод doSomeTasks - это всего лишь симулятор загрузки размера файла, просто замените этот метод на вашу долгосрочную задачу

3. Демо

Запустите приложение.

{Пусто} 1. Результат, одна кнопка.

индикатор выполнения android1

{Пусто} 2. Нажмите на кнопку, появится диалоговое окно с индикатором хода выполнения, чтобы показать текущий прогресс загрузки.

индикатор выполнения Android demo2

{Пусто} 3. Задача выполнена, индикатор выполнения покажет 100% и закроется автоматически.

индикатор выполнения Android demo3

Скачать исходный код

Скачайте его - ссылка://wp-content/uploads/2011/12/Android-ProgressBar-Example.zip[Android-ProgressBar-Example.zip](15 КБ)

Рекомендации

Пример Android ProgressBar]

ссылка://тег/андроид/[android]ссылка://тег/индикатор выполнения/[индикатор выполнения]