ProgressDialog を使ってみた

ProgressDilaog は
java.lang.Object
  ↳ android.app.Dialog
    ↳ android.app.AlertDialog
      ↳ android.app.ProgressDialog
を使います

というわけで、ProgressDialog をいじってみた

サンプルプログラム
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.View;

public class ProgressDialogTest extends Activity implements Runnable {
  ProgressDialog progressDialog;
  Thread thread;

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

    progressDialog = new ProgressDialog(this);
  
    // ProgressDialog のタイトルを設定
    progressDialog.setTitle("Title");

    // ProgressDialog のメッセージを設定
    progressDialog.setMessage("Message");

    // ProgressDialog の確定(false)/不確定(true)を設定します
    progressDialog.setIndeterminate(false);

    // ProgressDialog のスタイルを水平スタイルに設定
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    // 円スタイルの場合
    // progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

    // ProgressDialog の最大値を設定 (水平の時)
    progressDialog.setMax(100);

    // ProgressDialog の初期値を設定 (水平の時)
    progressDialog.incrementProgressBy(0);

    // ProgressDialog のセカンダリ値を設定 (水平の時)
    progressDialog.incrementSecondaryProgressBy(50);

    // ProgressDialog のキャンセルが可能かどうか
    progressDialog.setCancelable(false);
 
    // ProgressDialog のキャンセルされた時に呼び出されるコールバックを登録
    progressDialog.setOnCancelListener(new DialogInterface.OnCancelListener() {
      public void onCancel(DialogInterface dialog) {
        // Thread を停止
        stop();
      }
    });

    // Start ボタン
    findViewById(R.id.ProgressDialogTest_Button).setOnClickListener(  
      new View.OnClickListener() {  
        public void onClick(View view) {  
          // ProgressDialog を表示
          progressDialog.show();
          // Thread を起動
          init();
          start();
        }  
      }
    );

    // ProgressDialog の Cancel ボタン
    progressDialog.setButton(
      DialogInterface.BUTTON_NEGATIVE,
      "Cancel",
      new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
          // ProgressDialog をキャンセル
          dialog.cancel(); 
        }
      }
    );
  }
 
  /** Runnable のプログラム */
  public void init() {
    thread = null;
  }
  public void start() {
    if (thread == null) {
      thread = new Thread(this);
      thread.start();
    }
  }
  public void run() {
    int count = 0;
    Thread thisThread = Thread.currentThread();
    while (thisThread == thread) {
      // 100ms毎に Progress Bar を進める
      progressDialog.setProgress(count++);  
      try {
        thread.sleep(100);  
      } catch (InterruptedException e) {
      }
      if (count >= progressDialog.getMax()) {
        // Progress が完了
        break;
      }
    }
    // Progress Dialog を消す
    progressDialog.dismiss();
  }
  public void stop() {
    thread = null;
  }
}

プログラムを実行すると...

円スタイルのとき

こんな感じ!

1 件のコメント:

  1. これのダイアログを使用しないバージョンを教えていただけないでしょうか?

    返信削除