Marina, parte de este equipo, nos hizo el favor de escribir este artículo ya que conoce a la perfección este tema.
Solución:
Deberías intentar usar un WebChromeClient
e implementar 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
);
EDITAR : para verificar si onPageStarted se carga más de una vez:
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);
);
La mejor manera de detectar si una página se ha renderizado es usar la devolución de llamada onPageCommitVisible, disponible en la API 23. onPageLoadFinished
no es adecuado, ya que se entrega demasiado pronto (cuando el HTML se procesa, pero aún no se procesa).
webview.setWebViewClient(nuevo WebViewClient()
@Override
public void onPageCommitVisible (WebView view,
String url)
}
Puedes hacerlo así, en tu WebView:
@Override
public void invalidate()
super.invalidate();
if (getContentHeight() > 0)
// WebView has displayed some content and is scrollable.
Gracias a: https://stackoverflow.com/a/14678910/1310343
Comentarios y puntuaciones
Eres capaz de añadir valor a nuestra información cooperando tu veteranía en los comentarios.