Как показать панель загрузки при рендеринге с помощью Webview.loadUrl в android?

При использовании webview для отображения html-страниц,

После завершения рендеринга будет несколько секунд пустой страницы.

Для лучшего пользовательского опыта есть ли способ показать изображение загрузки за несколько секунд?

Solutions Collecting From Web of "Как показать панель загрузки при рендеринге с помощью Webview.loadUrl в android?"

Попробуй это

...... webView.setWebChromeClient(new WebChromeClient() { public void onProgressChanged(WebView view, int progress) { activity.setTitle("Loading..."); activity.setProgress(progress * 100); if(progress == 100) activity.setTitle(R.string.app_name); } }); ... 

Попробуйте этот сегмент кода. Показать прогрессDialog или изображение или макет, что вы хотите в onPageStarted() & hide in onPageFinished()

  webview.setWebViewClient(new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // TODO show you progress image super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { // TODO hide your progress image super.onPageFinished(view, url); } }); 

Попробуйте этот код, чтобы показать ProgressDialog

  webView.setWebChromeClient(new WebChromeClient() { private ProgressDialog mProgress; @Override public void onProgressChanged(WebView view, int progress) { if (mProgress == null) { mProgress = new ProgressDialog(getActivity()); mProgress.show(); } mProgress.setMessage("Loading " + String.valueOf(progress) + "%"); if (progress == 100) { mProgress.dismiss(); mProgress = null; } } }); 

Это то, что сработало для меня в KOTLIN :

 private fun setupWebView() { val webViewClient: WebViewClient = object: WebViewClient() { override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean { view?.loadUrl(request?.url.toString()) return super.shouldOverrideUrlLoading(view, request) } override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { showProgressDialog() super.onPageStarted(view, url, favicon) } override fun onPageFinished(view: WebView?, url: String?) { hideProgressDialog() super.onPageFinished(view, url) } } webView.webViewClient = webViewClient webView.settings.javaScriptEnabled = true webView.settings.defaultTextEncodingName = "utf-8" }