しばおま画面
処理待ちを行うような場合の雛形
public class Test05 extends Activity { // しばおま画面ダイアログ private ProgressDialog dlg; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Button btn1 = (Button)this.findViewById(R.id.button1); btn1.setOnClickListener(new OnClickListener() { public void onClick(View v) { btn1_onClick(); } }); } protected void btn1_onClick() { // しばおま画面表示 dlg = new ProgressDialog(this); dlg.setProgressStyle(ProgressDialog.STYLE_SPINNER); dlg.setMessage("しばらくお待ちください。"); dlg.setCancelable(false); dlg.show(); // 実行処理のスレッド開始 Thread job = new Thread(new Runnable() { public void run () { runProc(); } }); job.start(); } // 実行処理 private void runProc() { // なんからの処理 for (int i=0; i<10; i++) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } // しばおま画面クローズ dlg.dismiss(); // 実行処理が終わったら画面を切り替える this.runOnUiThread(new Runnable() { public void run() { setContentView(R.layout.sub); } }); } }
キャンセルができるようにするには
dlg.setCancelable(true); dlg.setOnCancelListener(new OnCancelListener() { public void onCancel(DialogInterface dialog) { cancelProc(); } }); // キャンセル処理 protected void cancelProc() { TextView text1 = (TextView)this.findViewById(R.id.text1); text1.setText("キャンセルされました。"); }