package com.example.android.recipe029; import android.app.Activity; import android.app.ProgressDialog; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; public class Recipe029 extends Activity { private ProgressDialog mProgressDialog; private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { mProgressDialog.dismiss(); } }; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); } public void onSpinnerClick(View view) { mProgressDialog = new ProgressDialog(this); mProgressDialog.setTitle("通信中"); mProgressDialog.setMessage("しばらくお待ちください"); mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER); mProgressDialog.show(); Thread thread = new Thread(new MockForSpinner()); thread.start(); } public void onHorizontalClick(View view) { mProgressDialog = new ProgressDialog(this); mProgressDialog.setTitle("通信中"); mProgressDialog.setMessage("しばらくお待ちください"); mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); mProgressDialog.show(); Thread thread = new Thread(new MockForHorizontal()); thread.start(); } private class MockForSpinner implements Runnable { public void run() { try { // 時間のかかる処理のつもりで // 5秒スリープ Thread.sleep(5 * 1000); } catch (InterruptedException e) { e.printStackTrace(); } // ハンドラにメッセージを通知 mHandler.sendEmptyMessage(0); } } private class MockForHorizontal implements Runnable { public void run() { try { // 進捗100%の値を5として mProgressDialog.setMax(5); for (int i = 1; i <= 5; i++) { // 1から5までをセット mProgressDialog.setProgress(i); // サンプルのため1秒スリープ Thread.sleep(1 * 1000); } } catch (InterruptedException e) { e.printStackTrace(); } mHandler.sendEmptyMessage(0); } } }