2011-12-21 19 views
5

Grazie per aver cercato di risolvere il mio problema!XML Splash Screen -> Mostra Webview

Attualmente la mia app carica fondamentalmente una pagina Web utilizzando la vista Web di Android. Lo svantaggio è che a volte (con una cattiva connessione) la pagina web richiede più di 10 secondi per essere caricata. C'è un modo per creare una specie di splash "caricamento" XML durante il caricamento della pagina web?

Date un'occhiata a mio codice ...

package com.ect; 

import android.app.Activity; 
import android.os.Bundle; 
import android.view.Window; 
import android.webkit.CookieSyncManager; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.Toast; 

public class SomeActivity extends Activity { 

    /** Called when the activity is first created. */ 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     //THIS IS WHAT I WANT: setContentView(R.layout.main); 

     CookieSyncManager.createInstance(getBaseContext()); 

     // Let's display the progress in the activity title bar, like the 
     // browser app does. 


     getWindow().requestFeature(Window.FEATURE_PROGRESS); 

     WebView webview = new WebView(this); 
     setContentView(webview); 


     webview.getSettings().setJavaScriptEnabled(true); 

     final Activity activity = this; 
     webview.setWebChromeClient(new WebChromeClient() { 
     public void onProgressChanged(WebView view, int progress) { 
      // Activities and WebViews measure progress with different scales. 
      // The progress meter will automatically disappear when we reach 100% 
      activity.setProgress(progress * 1000); 
     } 
     }); 

webview.setWebViewClient(new WebViewClient() { 

public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
     //Users will be notified in case there's an error (i.e. no internet connection) 
     Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show(); 
} 

public void onPageFinished(WebView view, String url) { 
    CookieSyncManager.getInstance().sync(); 
} 
}); 

CookieSyncManager.getInstance().startSync(); 
CookieSyncManager.getInstance().sync(); 

    //This will load the webpage that we want to see 
     webview.loadUrl("http://www.web.com/"); 

    } 
} 

Questo è il mio codice. Se guardi da vicino ho fatto un commento che dice "QUESTO E QUELLO CHE VOGLIO: ..."

Quel commento chiamerebbe il file main.xml da visualizzare, ma se uso quel commento il file main.xml verrà visualizzato, ma la webview non viene mai visualizzata ...

Come visualizzare il file main.xml e quindi (una volta caricata la vista Web) viene visualizzata la pagina Web?

risposta

3

È necessario creare un oggetto WebViewClient e sovrascrivere il metodo onPageFinished(). Quindi utilizzare webView.setWebViewClient() per impostare l'oggetto WebViewClient creato in precedenza su WebView. Ora è possibile eseguire alcuni codici in onPageFinished() come setContentView() per modificare la visualizzazione del contenuto dalla schermata di caricamento alla visualizzazione Web al termine del caricamento.

Questo tutorial potrebbe aiutarti un po ', anche se non è esattamente quello di cui hai bisogno. http://www.giantflyingsaucer.com/blog/?p=1331

4

Prendere un look here, credo che questo abbia già risposto. In pratica sostituisce alcuni metodi della classe WebViewClient.

3

È necessario utilizzare l'evento onPageFinished().

Ecco il riferimento ufficiale Clickme

La tua attività principale deve setContentView (R.layout.main); e la funzione onPageFinished() deve setContentView (webview);

+0

Grazie Piperoman! Sono completamente nuovo nello sviluppo con Android ... C'è un modo in cui puoi darmi un po 'di codice? – Joe

3

Si può fare qualcosa di simile, Nel layout del layout del frame (o relativo layout) fare qualcosa del genere.

<Framelayout android:layout_height="fill_parent" android:layout_width="fill_parent" 
....> 

    <Webview android:layout_height="fill_parent" android:layout_width="fill_parent"/> 

    <include android:layout_height="fill_parent" android:layout_width="fill_parent" 
    layout="@loadingLayout"/> 

</Framelayout> 

Quando la visualizzazione Web termina il caricamento, è sufficiente modificare la visibilità dei componenti inclusi su Via

Spero che sia d'aiuto ..

+0

Puoi darmi tutto il codice per favore? – Joe

+0

Mi dispiace ma non ho tutto il codice, ma cercherò di pubblicare un esempio più completo quando posso. –

Problemi correlati