2011-03-14 20 views
16

Questa è più una questione visiva che un problema diretto, ma quando una WebView viene caricata nella mia applicazione, lo schermo è bianco per 2-4 secondi finché il contenuto non è completamente caricato. Il tempo dipende dalla dimensione del contenuto che viene caricato.Come gestire la schermata di caricamento bianco vuoto di una Webview Android?

C'è un modo per gestirlo, in modo che lo schermo si aggiorni solo al contenuto quando viene caricato? Qualcosa come un'animazione "loading ..." o qualcosa di simile? Semplicemente non voglio che il semplice schermo bianco venga presentato ai miei utenti.

Ho una schermata iniziale che carica la WebView. Il WebView funziona bene dopo quella pausa iniziale iniziale (durante il caricamento), ma vorrei tenerlo su una schermata particolare fino a quando la pagina non viene caricata o avere una schermata nera con un caricatore di avanzamento.

C'è qualcosa che rileva un carico completo forse? Se fosse così, potrei usarlo come innesco.

Qualcuno sa un modo per gestire questo schermo bianco vuoto?

Grazie!

/r

risposta

0

forse si può dare un'occhiata a questo problema precedente.

How to listen for a WebView finishing loading a URL?

+0

Grazie - inizio perfetto. Stavo cercando le parole chiave sbagliate! – Robbe

+0

A volte, onPageFinished viene chiamato anche se la pagina non viene renderizzata completamente, quindi è possibile ottenere una schermata vuota su Webview. Per mostrare la finestra di avanzamento fino a quando la pagina è completamente renderizzata devi usare onLoadResource e controllare l'avanzamento della pagina. Controlla questa risposta http://stackoverflow.com/a/31537328/1066839 – John

21

Si potrebbe in alternativa, fare la WebView trasparente:

webview.setBackgroundColor(0x00000000); 
+0

Questo è il jammy che ha risolto per me. –

+0

L'aggiunta di 'android: background =" @ android: color/transparent "' nell'XML non ha alcun effetto. 'webView.setBackgroundColor (Color.TRANSPARENT)' fa. –

2

la risposta a questo è che non c'è nessuna buona risposta. quello che vuoi, come hai affermato, è che la webview mostra il contenuto corrente fino a quando il nuovo contenuto non viene caricato ... proprio come un normale browser. non lo farà.

è possibile visualizzare le animazioni di caricamento, ma non è ancora una buona esperienza utente. se si crea un tipo di animazione a schermo intero, l'utente viene scosso da schermi lampeggianti. se fai un avanzamento del tipo di browser in alto/in basso, sembra strano perché hai ancora la maggior parte della pagina bianca.

8

Basta inserire questo codice nel 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 
     } 
     } 

     }); 
Problemi correlati