しばおま画面

処理待ちを行うような場合の雛形

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("キャンセルされました。");
    }