我正在使用WebView加载其中包含一些图像的页面。 我需要准确检测它何时完成加载和呈现页面中的所有图像。
我尝试使用“ onPageFinished” ,但是在所有图像都完全下载并可见之前,它会被调用。
“ onProgressChanged” 也是如此。
有没有一种方法可以让我知道WebView何时完全加载其所有视图和图像,并且它们在屏幕上可见??
答案 0 :(得分:1)
在我的工作代码中,我正在使用下一个变体:
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setLoadWithOverviewMode(true);
// try to use this pieсe of code
webView.setWebViewClient(new WebViewClient() {
public void onPageFinished(WebView view, String url) {
// put here your code
System.out.println("All images are downloaded and displayed");
}
});
webView.addJavascriptInterface(this, "android");
webView.loadDataWithBaseURL(null, content, "text/html", "UTF-8", null);
答案 1 :(得分:0)
如果您有多个重定向,则可能会失败。尽管这种方法可以解决大多数问题
boolean loadingFinished = true; boolean redirect = false;
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(
WebView view, WebResourceRequest request) {
if (!loadingFinished) {
redirect = true;
}
loadingFinished = false;
webView.loadUrl(request.getUrl().toString());
return true;
}
@Override
public void onPageStarted(
WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
loadingFinished = false;
//SHOW LOADING IF IT ISNT ALREADY VISIBLE
}
@Override
public void onPageFinished(WebView view, String url) {
if (!redirect) {
loadingFinished = true;
}
if (loadingFinished && !redirect) {
//HIDE LOADING IT HAS FINISHED
} else {
redirect = false;
}
}
});