プログレスダイアログ (ProgressDialog)
何かの処理を実行中に表示するダイアログには、プログレスダイアログ (ProgressDialog) クラスを使用します。
この使い方を説明します。
ソースの定義
プログレスダイアログを使用するには、ソースファイルに以下のように記述します。
ここでは、ボタン押下でプログレスダイアログを表示し、スレッド処理を実行、実行終了後にプログレスダイアログを閉じる。という例を示します。
package jp.sample.progressdlgsample;
import jp.sample.progressdlgsample.R;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class ProgressDlgSampleActivity extends Activity {
/** プログレスバー */
private ProgressDialog mPrgDlg;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// 実行中ダイアログの生成・初期化
mPrgDlg = new ProgressDialog(this);
mPrgDlg.setTitle("スレッド実行中");
mPrgDlg.setMessage("しばらくお待ちください。");
mPrgDlg.setIndeterminate(false);
mPrgDlg.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
mPrgDlg.setMax(100); // 最大値
mPrgDlg.incrementProgressBy(0); // 初期値
// ボタンクリック処理
Button btnStart = (Button)findViewById(R.id.btnStart);
btnStart.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
// ダイアログ表示
mPrgDlg.show();
// スレッド生成・実行
Thread thread = new Thread(runnable);
thread.start();
}
});
}
/**
* スレッド処理
*/
Runnable runnable = new Runnable() {
public void run() {
for (int i=0; i<100; i++) {
try {
Thread.sleep(100);
mPrgDlg.setProgress(i+1);
} catch (InterruptedException e) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
}
Message msg = new Message();
msg.arg1 = 0;
handler.sendMessage(msg);
}
};
/**
* スレッドの終了を受信するハンドラ
*/
private final Handler handler = new Handler() {
@Override
public void handleMessage(Message msg)
{
// 実行中ダイアログを閉じる
mPrgDlg.dismiss();
};
};
}
※ 設定する文字列は、本来 string.xml に定義すべきですが、説明を簡単にするために直接記述しています。
各メソッドの意味は以下の通りです。
| メソッド | 説明 |
|---|---|
| setTitle | ダイアログのタイトルバーに表示する文字を設定 |
| setMessage | 表示するメッセージを設定 |
| setProgressStyle | プログレスダイアログのスタイルの設定 STYLE_HORIZONTAL:水平のプログレスバー STYLE_SPINNER:円が回るタイプ |
| setMax | プログレスバーの最大値 (Style が STYLE_HORIZONTAL の場合のみ設定) |
| show | プログレスダイアログを表示する。 |
| dismiss | プログレスダイアログを閉じる。 |