Androidプログラマへの道 〜 Moonlight 明日香 〜 - プログレスバーをダイアログに表示する
プログレスバーは, 主に実行中の処理の進行状況を表示するためのものである.
ダイアログに表示したい場合はプログレスダイアログ(ProgressDialog)を使用する.

水平プログレスバーをダイアログに表示する


円プログレスバーをダイアログに表示する



  • ProgressDialog01.java
    • ProgressDialogのインスタンスを生成する.
    • setTitleメソッドでタイトルを設定する.
    • setMessageメソッドで本文を設定する.
    • setProgressStyleメソッドでプログレスバーのスタイルを設定する.
   水平プログレスバー:ProgressDialog.STYLE_HORIZONTAL
   円プログレスバー:ProgressDialog.STYLE_SPINNER
    • ボタンが押されると, プログレスバーを表示する.
    • プログレスバーの進捗率を更新するスレッドを起動する.
    • getMaxメソッドで取得した進捗率の分母の数だけループする. 進捗率の分母はsetMaxメソッドで設定できる.
    • ループの中では, setProgressメソッドで進捗率を更新する.
    • 進捗率が100%になると, プログレスバーのダイアログを閉じる.
package com.moonlight_aska.android.progressdialog01;

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.view.View;

public class ProgressDialog01 extends Activity {
  private ProgressDialog dlg = null;
  /** Called when the activity is first created. */
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    dlg = new ProgressDialog(this);
    // タイトル, 本文を設定
    dlg.setTitle("プログレスバー");
    dlg.setMessage("しばらくお待ちください.");
    // スタイルを設定
    dlg.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);

    findViewById(R.id.button_id).setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        // TODO Auto-generated method stub
        dlg.show();
        new Thread(new Runnable() {
          @Override
          public void run() {
            try {
              for(int i=0; i<dlg.getMax(); i++) {
                // 進捗率を更新
                dlg.setProgress(i);
                Thread.sleep(100);
              }
            } catch (InterruptedException e) {
              // 例外処理
            }
            dlg.dismiss();
          }
        }).start();
      }
    });
  }
}