Android Webview: Detect when rendering is finished
The best way to detect if a page has rendered is to use the onPageCommitVisible callback, available from API 23. onPageLoadFinished
is not suitable, since it's delivered too soon (when the HTML is processed, but not yet rendered).
webview.setWebViewClient(new WebViewClient() {
@Override
public void onPageCommitVisible (WebView view,
String url)
}
}
You should try to use a WebChromeClient
and implement onProgressChanged
:
http://developer.android.com/reference/android/webkit/WebChromeClient.html#onProgressChanged(android.webkit.WebView, int)
mButterflyWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onProgressChanged(WebView view, int progress) {
if (progress == 100) {
// do screenshot
}
}
});
EDIT : to check if onPageStarted is loaded more than once :
mButterflyWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Log.d("WebView", "onPageStarted " + url);
}
@Override
public void onPageFinished(WebView view, String url) {
Log.d("WebView", "onPageFinished " + url);
}
});