Android 処理待ち・進行状況表示ダイアログの設定(ProgressDialog)
前回記述したProgressDialogより、今回は進行状況を表示させる場合の設定について説明します。
前回と同様、Runnableインターフェイスを実装し、
クラス変数にプログレスダイアログとスレッドを宣言する。
public class Terms extends Activity implements Runnable { private static ProgressDialog waitDialog; private Thread thread; private boolean isProgressEnd = false; private boolean isErr = false;
任意の処理時にプログレスダイアログの設定・表示を行い、スレッドを実行する。
private void setWait(){ //プログレスダイアログの設定 waitDialog = new ProgressDialog(this); waitDialog.setMessage("注文データを送信しています"); // 水平スタイルに設定 waitDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); // indeterminate(不確定モード)モードにするかの設定 // trueにすると、全体の時間がまだ分かってないときに「ねじねじ」で表示する waitDialog.setIndeterminate(false); waitDialog.setMax(100); // 最大値の設定 waitDialog.incrementProgressBy(0); // セカンダリ値の設定 waitDialog.setCancelable(false); // キャンセル設定 // ProgressDialog の Cancel ボタン waitDialog.setButton( DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // ProgressDialog をキャンセル dialog.cancel(); //スレッドの破棄 thread.stop(); thread = null; isProgressEnd = false; isErr = false; } } ); isProgressEnd = false; waitDialog.show(); thread = new Thread(this); // show()メソッドでプログレスダイアログを表示しつつ、 // 別スレッドを使い、裏で重い処理を行う。 thread.start(); } @Override public void run() { int count = 0; Thread thisThread = Thread.currentThread(); while (thisThread == thread) { // 一定時間毎に Progress Bar を進める // よって正確な進行状況かは疑問(・・・汗) waitDialog.setProgress(count++); try { Thread.sleep(nnn); } catch (InterruptedException e) { } if (count >= waitDialog.getMax() || isProgressEnd) { // Progress が完了 waitDialog.setProgress(waitDialog.getMax()); break; } } handler.sendEmptyMessage(0); } private Handler handler = new Handler() { public void handleMessage(Message msg) { // 処理終了時の動作をここに記述。 YYY(); // プログレスダイアログ終了 waitDialog.dismiss(); //エラー判定 if(isErr){ //エラー処理 } } }; private void YYY(){ // 処理待ち中に行う処理をここに実装 //スレッドの終了 isProgressEnd = true; thread = null; }
スペシャリスト
やまま yamama
マンガとアニメとゲームから錬成された宇宙大好きエンジニア。 軌道エレベーターで行ける静止軌道上のコロニーに住まいを移し、ゲームやってマンガ読んでアニメ見て爆睡、ゲームやってマンガ読んでアニメ見て爆睡、という生活を夢見ながら今日もコードを書き続けるのだった。
TAG
- Android
- AWS
- Bitrise
- CodePipeline
- Firebase
- HTML
- iOS
- IoT
- JavaScript
- KPI
- Linux
- Mac
- Memcached
- MGRe
- MGReのゆるガチエンジニアブログ
- MySQL
- PHP
- PICK UP
- PR
- Python
- Ruby
- Ruby on Rails
- SEO
- Swift
- TIPS
- UI/UX
- VirtualBox
- Wantedly
- Windows
- アクセス解析
- イベントレポート
- エンジニアブログ
- ガジェット
- カスタマーサクセス
- サーバ技術
- サービス
- セキュリティ
- セミナー・展示会
- テクノロジー
- デザイン
- プレスリリース
- マーケティング施策
- マネジメント
- ラボ
- リーンスタートアップ
- 企画
- 会社紹介
- 会社紹介資料
- 勉強会
- 実績紹介
- 拡張性
- 採用
- 日常
- 書籍紹介
- 歓迎会
- 社内イベント
- 社員インタビュー
- 社長ブログ
- 視察
- 開発環境