投稿

7月, 2018の投稿を表示しています

【Android】WebViewのロード完了までプログレスダイアログを表示する

イメージ
WebViewに限ったことではないですが、重たい処理を実行中にローディング中であることを示すダイアログを表示する方法のまとめです。 画面の初期化やファイルの読み込み・書き込みなど様々な用途に応用できます。 今回はWebViewClientを継承したクラスを作ってonPageFinished()メソッドなどを実装します。 実装 プログレスダイアログの生成 変数(progressDialog)はメンバ変数、もしくはfinalで宣言する必要があります。理由はダイアログを閉じる時にメインスレッドとは別のスレッドからアクセスすることになるのでメソッド内のローカル変数だとエラーになります。 progressDialog = new ProgressDialog(this); progressDialog.setMessage("Loading..."); progressDialog.show(); プログレスダイアログの表示開始と主処理開始 HandlerクラスはUIスレッド(つまりメインスレッド)へRunnableを渡してUIや画面側を処理することが来ます。ここではWebViewのローディングと、その中のonPageFinishedメソッドでダイアログの停止を行っています。 // スレッド内でプログレスダイアログを閉じるためにHandlerを生成 final Handler handler = new Handler(); // スレッド処理 new Thread(new Runnable() { @Override public void run() { try { handler.post(new Runnable() { @Override public void run() { // ※ここで本来行いたい処理をする webView.loadUrl("https://news.google.com/"); } }); } catch (E