webview読み込み中にダイアログを表示する方法

2019年5月13日

webview読み込み中に起きてしまう問題について

URLの読み込み中にwebviewを使用している画面に遷移してしまうと、

URLの読みこみ中でページが真っ白になってしまうことがあります。

 

これを防ぐためURL読み込み中はプログレスダイアログを表示して、

その旨をユーザに視覚的に伝えるのが本記事の趣旨となります。

 

Webviewの読み込みは行えている前提で説明していきますので、

Webviewの読み込み方がわからない方はこちらのエントリーをご覧ください。

 

 

webviewを表示する際の挙動について

webviewのページ呼び込みを開始すると、onPageStartedがコールされ、

ページの読み込み終了後はonPageFinishedがコールされます。

コールされるメソッド webviewの状態 dialogの処理
onPageStarted ページ呼び込み開始時 dialog.show
onPageFinished ページ読み込み終了後 dialog.dismiss

これらを利用して、ページ読み込み時にダイアログを表示して、

ページ読み込み終了後にダイアログを消す処理を入れ込みます。

webview読み込み中にダイアログを表示する方法

下記のようにdialog.showとdialog.dismissの処理をそれぞれ、

onPageStartedonPageFinishedに記述すると実装できます。

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        mWebView.setWebViewClient(new WebViewClient() {
            private ProgressDialog dialog = null;
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                if (dialog == null || !dialog.isShowing()) {
                    dialog = new ProgressDialog(getActivity());
                    dialog.setTitle("読み込み中");
                    dialog.show();
                }
            }
           @Override
           public void onPageFinished(WebView view, String url) {
               if (dialog != null) {
                  dialog.dismiss();
                  dialog = null;
               }
           });
    }