【Android】プログレスダイアログの表示1

2019年7月29日

プログレスダイアログの表示方法です。
ボタンを押すと、下記のようなダイアログを表示します。
プログレスダイアログ

●ソースコード
「R.layout.main」にボタンを配置し、
「android:onClick="BtnClick"」を設定し使用するソースです。

private ProgressDialog progressDialog1;
private ProgressThread1 progressThread1;
static final int PROGRESS_DIALOG1 = 0;
public class TestDialog extends Activity {
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
	}
	//ボタンクリックイベント(XMLにandroid:onClickを記述)
	public void BtnClick(View v) {
		if(v.getId() == R.id.button0)
		{
			showDialog(PROGRESS_DIALOG1);
		}
	}
	@Override
	protected Dialog onCreateDialog(int id) {
		// ダイアログが複数ある場合にidを使用する
		if (id == 0) {
			//プログレスダイアログ表示
			progressDialog1 = new ProgressDialog(this);
			progressDialog1.setProgressStyle(ProgressDialog.STYLE_SPINNER);
			progressDialog1.setMessage("処理中です...");
			progressDialog1.setCancelable(true);
			progressThread1 = new ProgressThread1(handler1);
			progressThread1.start();
			return progressDialog1;
		}
	}
	@Override
	protected void onPrepareDialog(int id, Dialog dialog) {
		super.onPrepareDialog(id, dialog);
		if (id == 0) {
			//ダイアログの内容に変更がある場合に記述
		}
	}
	private final Handler handler1 = new Handler() {
		@Override
		public void handleMessage(Message msg) {
			int result = msg.getData().getInt("result");
			progressDialog1.setProgress(result);
			if (result == 0){
				TextView textview1 = (TextView)findViewById(R.id.textview1);
				textview1.setText("成功しました1!");
				removeDialog(PROGRESS_DIALOG1);
			}
		}
	};
	private class ProgressThread1 extends Thread {
		Handler mHandler;
		ProgressThread1(Handler h) {
			mHandler = h;
		}
		public void run() {
			try {
				Thread.sleep(2000);
			}
			catch (InterruptedException e) {
				e.printStackTrace();
			}
			Message msg = mHandler.obtainMessage();
			Bundle b = new Bundle();
			b.putInt("result", 0);
			msg.setData(b);
			mHandler.sendMessage(msg);
		}
	}
}

スポンサーリンク