вот самый простой способ добавить индикатор выполнения в Android Web View.
Добавьте логическое поле в вашу деятельность / фрагмент
private boolean isRedirected;
Это логическое значение предотвратит перенаправление веб-страниц из-за неработающих ссылок. Теперь вы можете просто передать объект WebView и веб-URL в этот метод.
private void startWebView(WebView webView,String url) {
webView.setWebViewClient(new WebViewClient() {
ProgressDialog progressDialog;
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
isRedirected = true;
return false;
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
isRedirected = false;
}
public void onLoadResource (WebView view, String url) {
if (!isRedirected) {
if (progressDialog == null) {
progressDialog = new ProgressDialog(SponceredDetailsActivity.this);
progressDialog.setMessage("Loading...");
progressDialog.show();
}
}
}
public void onPageFinished(WebView view, String url) {
try{
isRedirected=true;
if (progressDialog.isShowing()) {
progressDialog.dismiss();
progressDialog = null;
}
}catch(Exception exception){
exception.printStackTrace();
}
}
});
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
}
Здесь, когда начнется загрузка, он будет вызывать onPageStarted
. Здесь я устанавливаю логическое поле false. Но когда загрузка страницы закончится, он перейдет к методу onPageFinished
, и здесь логическое поле установлено в true. Иногда, если URL-адрес мертв, он будет перенаправлен и достигнет onLoadResource()
до onPageFinished
метода. По этой причине он не будет скрывать индикатор выполнения. Чтобы предотвратить это, я проверяю if (!isRedirected)
в onLoadResource()
в методе onPageFinished()
перед тем, как закрыть диалог прогресса, вы можете написать свой 10-секундный код задержки
Вот и все. Удачного кодирования:)