Androidのプログレスバーの例

Androidの進行状況バーの例

Androidでは、進行状況バーは、タスクの完了に時間がかかることをユーザーに伝えるのに役立ちます。

このチュートリアルでは、進行状況バーのダイアログを表示して、タスクが実行中であることをユーザーに知らせる方法と、タスクが完了するまで進行状況バーのステータスを上げる方法を示します。

Note
詳細な説明については、このAndroid ProgressBar JavaDocを参照してください。

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

1. ボタンを追加する

res/layout/main.xml」ファイルを開き、デモ用の通常のボタンを追加するだけです。

ファイル:res / layout / main.xml




    

2. コードコード

プログレスバーを使用するための鍵は、「Thread」を使用して時間消費タスクを実行し、別の「Thread」を使用してプログレスバーのステータスを適宜更新することです。 コードのコメントを読んでください。一目瞭然です。

ファイル: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

アプリケーションを実行してください。

1. 結果、1つのボタン。

android progress bar demo1

2. ボタンをクリックすると、現在のダウンロードの進行状況を示す「進行状況バーダイアログ」が表示されます。

android progress bar demo2

3. タスクが完了すると、進行状況バーが100%表示され、自動的に閉じます。

android progress bar demo3

ソースコードをダウンロード

ダウンロード-Android-ProgressBar-Example.zip(15 KB)