2011-03-14 11 views
16

Esto es más una cuestión visual que un problema directo, pero cuando se carga un WebView en mi aplicación, la pantalla está en blanco blanco durante 2-4 segundos hasta que el contenido esté completamente cargado. El tiempo depende del tamaño del contenido que se está cargando.¿Cómo administrar la pantalla de carga de blanco en blanco de una vista web de Android?

¿Hay alguna manera de gestionar esto, de modo que la pantalla solo se actualice al contenido cuando se cargue? Algo así como una animación de "carga ..." o algo similar. Simplemente no quiero que se presente la pantalla blanca simple a mis usuarios.

Tengo una pantalla de inicio que carga el WebView. El WebView funciona bien después de esa pausa inicial en blanco (durante la carga), pero me gustaría mantenerlo en una pantalla en particular hasta que la página se haya cargado o tenga una pantalla negra con un cargador de progreso.

¿Hay algo que detecte una carga completa tal vez? Si ese fuera el caso, podría usarlo como un disparador.

¿Alguien conoce una forma de administrar esta pantalla en blanco?

Gracias!

/r

Respuesta

0

Tal vez pueda ver este número anterior.

How to listen for a WebView finishing loading a URL?

+0

Gracias - comienzo perfecto. ¡Estaba buscando las palabras clave incorrectas! – Robbe

+0

A veces, se llamará a onPageFinished incluso si la página no se procesa por completo, por lo que puede obtener una pantalla en blanco en la vista web. Para mostrar el diálogo de progreso hasta que la página esté completamente renderizada, debe usar onLoadResource y verificar el progreso de la página. Compruebe esta respuesta http://stackoverflow.com/a/31537328/1066839 – John

21

Se podría, alternativamente, hacer que la vista web transparente:

webview.setBackgroundColor(0x00000000); 
+0

Este es el jammy que lo arregló para mí. –

+0

Agregar 'android: background =" @ android: color/transparent "' en el XML no tiene ningún efecto. 'webView.setBackgroundColor (Color.TRANSPARENT)' hace. –

2

la respuesta a esto es que no hay una buena respuesta. lo que quiere, como dijo, es que la vista web muestra el contenido actual hasta que se carga el nuevo contenido ... al igual que un navegador normal. no hará eso.

puede mostrar la carga de animaciones, pero aún así no es una buena experiencia de usuario. Si realiza un tipo de animación de pantalla completa, el usuario se sacudirá con pantallas parpadeantes. si haces un progreso tipo navegador en la parte superior/inferior, parece extraño porque todavía tienes la mayor parte de la página en blanco.

8

En pocas palabras este código en onCreate

   ProgressDialog _dialog ;     
       my_web_view.setWebViewClient(new WebViewClient(){ 


     @Override 
     public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     // TODO Auto-generated method stub 
     _dialog =ProgressDialog.show(Store_locator.this, "", "Please wait..."); 
     super.onPageStarted(view, url, favicon); 
     } 
     @Override 
     public void onPageFinished(WebView view, String url) { 
     // TODO Auto-generated method stub 
     super.onPageFinished(view, url); 
     _dialog.dismiss(); 
     } 

     @Override 
     public void onReceivedError(WebView view, int errorCode, 
     String description, String failingUrl) { 
     // TODO Auto-generated method stub 
     super.onReceivedError(view, errorCode, description, failingUrl); 
     try{ 
     _dialog.dismiss(); 
     }catch (Exception e) { 
     // TODO: handle exception 
     } 
     } 

     }); 
Cuestiones relacionadas