2012-03-06 18 views
25

Tengo una aplicación que tiene 2 actividades, la primera se lanza para cargar una url en una vista web.Pantalla de bienvenida al cargar una URL en una vista web en la aplicación de Android

Funciona, pero mientras se carga la url, la vista web aparece vacía ... entonces quiero hacer una pantalla de bienvenida o algo así, para mostrarlo mientras se carga la url, lo hice en una nueva actividad , pero no sé qué puedo hacer para cerrar la tercera actividad cuando la URL está cargada ... Por favor, ¿alguien puede ayudarme?

Este es mi código ... ¡Gracias!

public class Visor extends Activity { 

    WebView mWebView; 
    int Result; 

    @Override 
    public void onCreate (Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.visor); 
     Bundle extras=getIntent().getExtras(); 
     String s= extras.getString("url"); 

     mWebView = (WebView) findViewById(R.id.webview); 
     mWebView.getSettings().setJavaScriptEnabled(true); 
     mWebView.getSettings().setPluginsEnabled(true); 
     mWebView.getSettings().setAllowFileAccess(true); 

     mWebView.loadUrl(s); 
     mWebView.setWebViewClient(new VisorClient()); 
     mWebView.getSettings().setBuiltInZoomControls(true); 

     } 

    private class VisorClient extends WebViewClient { 

      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       lanzarIntro(); 
      } 
      @Override 
      public void onPageFinished(WebView view, String url) { 
       mWebView.loadUrl(url); 
      } 
    } 

    public void lanzarIntro(){ 
     Intent i=new Intent (this, Intro.class); 

     startActivity(i); 


    } 



} 

Respuesta

59

lo hago al mostrar inicialmente una ImageView y luego una vez que el WebView ha cargado, intercambiando su visibilidad como esto

 WebView wv = (WebView) findViewById(R.id.webView1); 
     wv.getSettings().setJavaScriptEnabled(true); 
     wv.setWebViewClient(new WebViewClient() { 

      ... 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       //hide loading image 
       findViewById(R.id.imageLoading1).setVisibility(View.GONE); 
       //show webview 
       findViewById(R.id.webView1).setVisibility(View.VISIBLE); 
      } 


     });  
     wv.loadUrl("http://yoururlhere.com"); 

Y mi diseño xml se parece a esto

<ImageView android:id="@+id/imageLoading1" 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent" 
     android:visibility="visible" 
     android:src="@drawable/vert_loading" 
     /> 
    <WebView android:id="@+id/webView1" 
     android:layout_height="fill_parent" 
     android:layout_width="fill_parent" 
     android:visibility="gone" 
     /> 
+0

¡Gracias! funciona :) – Migua

+0

gracias, esto me ayudó a asignar. – David

+1

Funciona pero parpadea ... –

13

I tener una actividad 1 archivo xml y 1 clase Java. Dentro de archivo XML que tengo:

  1. WebView
  2. ImageView, logotipo de mi solicitud,
  3. ProgressBar y
  4. TextView, versión de la aplicación.

Código de main.xml:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:a="http://schemas.android.com/apk/res/android" 
    a:layout_width="fill_parent" 
    a:layout_height="fill_parent" 
    a:background="#aaaaaa" 
    a:orientation="vertical" > 

<WebView 
    a:id="@+id/webView1" 
    a:layout_width="fill_parent" 
    a:layout_height="fill_parent" /> 

<ImageView 
    a:id="@+id/imageView1" 
    a:layout_width="wrap_content" 
    a:layout_height="wrap_content" 
    a:layout_alignParentTop="true" 
    a:layout_centerHorizontal="true" 
    a:layout_marginTop="46dp" 
    a:src="@drawable/logo" /> 

<ProgressBar 
    a:id="@+id/progressBar1" 
    a:layout_width="wrap_content" 
    a:layout_height="wrap_content" 
    a:layout_below="@+id/imageView1" 
    a:layout_centerHorizontal="true" /> 

<TextView 
    a:id="@+id/textView1" 
    a:layout_width="wrap_content" 
    a:layout_height="wrap_content" 
    a:layout_alignParentBottom="true" 
    a:layout_alignParentRight="true" 
    a:layout_marginBottom="13dp" 
    a:layout_marginRight="13dp" 
    a:text="version 1.0" 
    a:textAppearance="?android:attr/textAppearanceSmall" 
    a:textColor="#444444" /> 

</RelativeLayout> 

Código de NovcanikActivity.java:

package zm.Nocanik; 

import android.app.Activity; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.View; 
import android.webkit.DownloadListener; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.ImageView; 
import android.widget.ProgressBar; 
import android.widget.TextView; 


public class NovcanikActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

    WebView webview = (WebView) findViewById(R.id.webView1); 

    WebSettings websettings = webview.getSettings(); 

    websettings.setJavaScriptEnabled(true); 
    websettings.setSaveFormData(false); 
    websettings.setSavePassword(false); 

    webview.loadUrl("http://m.novcanik.net/?appvers=1.0"); 
    webview.setHorizontalScrollBarEnabled(false); 
    webview.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY); 
    webview.setBackgroundColor(128); 

    webview.setWebViewClient(new NovcanikWebViewClient()); 

    webview.setDownloadListener(new DownloadListener() { 
     public void onDownloadStart(String url, String userAgent, 
       String contentDisposition, String mimetype, 
       long contentLength) { 
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setData(Uri.parse(url)); 
      startActivity(intent); 

     } 
    }); 




} 

public void visible(){ 

    WebView webview = (WebView) findViewById(R.id.webView1); 

    ImageView logo = (ImageView) findViewById(R.id.imageView1); 

    ProgressBar bar = (ProgressBar) findViewById(R.id.progressBar1); 

    TextView version = (TextView) findViewById(R.id.textView1); 

    webview.setVisibility(10); 

    logo.setVisibility(0); 

    bar.setVisibility(0); 

    version.setVisibility(0); 

} 

public void unvisible(){ 

    WebView webview = (WebView) findViewById(R.id.webView1); 

    ImageView logo = (ImageView) findViewById(R.id.imageView1); 

    ProgressBar bar = (ProgressBar) findViewById(R.id.progressBar1); 

    TextView version = (TextView) findViewById(R.id.textView1); 

    webview.setVisibility(0); 

    logo.setVisibility(10); 

    bar.setVisibility(10); 

    version.setVisibility(10); 

} 


private class NovcanikWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView webview, String url){ 
     webview.loadUrl(url); 
     return true; 
    } 

@Override 
public void onReceivedError(WebView view, int errorCode, 
     String description, String failingUrl) { 
    // TODO Auto-generated method stub 
    view.loadUrl("file:///android_asset/noconnection.html"); 
} 

@Override 
public void onPageStarted(WebView view, String url, Bitmap favicon) { 

    visible(); 

} 

@Override 
public void onPageFinished(WebView view, String url) { 

    unvisible(); 

} 

} 

} 

Lo siento por no descripción. Si hubiera necesidad de una descripción, describiré en detalle todo el código.

+0

Esto es increíble. ¡Gracias! – smarble

+0

Esto es exactamente. lo que quiero. Muchas gracias ... :) – Laxmeena

+0

Genial. Gracias por compartir –

Cuestiones relacionadas