プログレスダイアログを表示する - Android

Android端末でプログレスダイアログボックスを表示するコードを紹介します。
Androidアプリケーションプロジェクトを新規作成します。

プロジェクトの設定

  • Project name: SimpleProceedDialog
  • Build Target: Android 2.3.3
  • Application name: SimpleProceedDialog
  • Package name: iPentec.SimpleApp.SimpleProceedDialog
  • Activity: SimpleProceedDialogActivity

UI

下図のUIを作成します。ボタンを一つ配置しOnClickプロパティを"button1_click"にします。

コード

SimpleProceedDialogActivity.java

アクティビティのクラスに以下のコードを実装します。
package iPentec.SimpleApp.SimpleProceedDialog;

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

public class SimpleProceedDialogActivity extends Activity {
  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
  }
    
  public void button1_click(View view){
    ProgressDialog progressDialog;
    progressDialog = new ProgressDialog(this);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
    progressDialog.setCancelable(true);
    progressDialog.setTitle("処理中");
    progressDialog.setMessage("計算中です。しばらくお待ちください。");
    progressDialog.show();
    
    MyThread myThread = new MyThread();
    myThread.target = progressDialog;
    myThread.start();
  }
}

解説

ProgressDialog progressDialog;
progressDialog = new ProgressDialog(this);
にてプログレスダイアログのインスタンスを作成します。

progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progressDialog.setCancelable(true);
progressDialog.setTitle("処理中");
progressDialog.setMessage("計算中です。しばらくお待ちください。");
プログレスダイアログのスタイルや設定、ダイアログボックスに表示するタイトルやメッセージを設定します。

progressDialog.show();
プログレスダイアログを表示します。

MyThread myThread = new MyThread();
myThread.target = progressDialog;
myThread.start();
MyThreadクラスのインスタンスを作成し、target変数にプログレスダイアログのインスタンスを設定し、スレッドを実行します。

MyThread.java

スレッドのクラスを新規作成します。クラス名は"MyThread"とします。Threadクラスを継承したクラスとして作成します。

package iPentec.SimpleApp.SimpleProceedDialog;

import android.app.ProgressDialog;
public class MyThread extends Thread {
  public ProgressDialog target;

  public void run(){
    try{
      this.sleep(5000);
    }
    catch(InterruptedException e){
    }
    if (target != null){
      target.dismiss();
    }
  }
}

解説

スレッドが実行されるとsleep()メソッドにより5秒停止し、その後targetに設定したProgressDialogを閉じます。

実行結果

アプリケーションを実行します。下図の画面が表示されます。


ボタンをタップすると下図のプログレスダイアログが表示されます。スレッドがバックグラウンドで動作し5秒経過するとダイアログが閉じます。

著者
iPentecのプログラマー、最近はAIの積極的な活用にも取り組み中。
とっても恥ずかしがり。
最終更新日: 2024-01-04
作成日: 2012-02-08
iPentec all rights reserverd.