Hier ist der einfachste Weg, um Fortschrittsbalken in Android Web View hinzuzufügen.
Fügen Sie Ihrer Aktivität / Ihrem Fragment ein boolesches Feld hinzu
private boolean isRedirected;
Dieser Boolesche Wert verhindert die Umleitung von Webseiten aufgrund toter Links. Jetzt können Sie einfach Ihr WebView-Objekt und Ihre Web-URL an diese Methode übergeben.
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);
}
Hier wird beim Start des Ladevorgangs aufgerufen onPageStarted
. Hier setze ich Boolesches Feld ist falsch. Aber wenn das Laden der Seite beendet ist, kommt es zur onPageFinished
Methode und hier wird das Boolesche Feld auf true gesetzt. Manchmal, wenn die URL tot ist, wird sie umgeleitet und kommt onLoadResource()
vor der onPageFinished
Methode. Aus diesem Grund wird der Fortschrittsbalken nicht ausgeblendet. Um dies zu verhindern, checke ich if (!isRedirected)
einonLoadResource()
In der onPageFinished()
Methode können Sie vor dem Schließen des Fortschrittsdialogs Ihren 10-Sekunden-Zeitverzögerungscode schreiben
Das ist es. Viel Spaß beim Codieren :)