Saltar al contenido

Android Webview: detecta cuando finaliza el renderizado

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.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *