首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android WebView 載入頁面顯示進度對話框:使用 WebViewClient 監聽載入狀態

     編輯:程式設計綜合問答

在 WebViewClient 的 onPageStarted 顯示 ProgressDialog,onPageFinished 關閉,避免 AsyncTask 導致的時序問題。

程式碼

webView.setWebViewClient(new WebViewClient() {
    private ProgressDialog progressDialog;

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        progressDialog = ProgressDialog.show(MainActivity.this, "", "載入中...", true);
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        if (progressDialog != null && progressDialog.isShowing()) {
            progressDialog.dismiss();
        }
        super.onPageFinished(view, url);
    }

    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        if (progressDialog != null && progressDialog.isShowing()) {
            progressDialog.dismiss();
        }
        super.onReceivedError(view, request, error);
    }
});
webView.loadUrl("https://example.com");

優點

  • 直接對應 WebView 載入生命週期,無需額外執行緒協調。
  • 自動處理重導向、錯誤頁面等情況。
  • 程式碼簡潔,易於維護。

注意

  • ProgressDialog 已棄用 (API 26+),建議改用 ProgressBar 內嵌於佈局或 SwipeRefreshLayout。
  • 若需顯示具體進度百分比,需配合 WebChromeClient.onProgressChanged。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved