web-dev-qa-db-fra.com

Écran d'accueil lors du chargement d'une URL dans une vue Web dans l'application Android

J'ai une application qui a 2 activités, la première lance la seconde pour charger une URL dans une vue Web.

Cela fonctionne, mais pendant le chargement de l'URL, la vue Web semble vide ... alors je veux faire un écran de démarrage ou quelque chose comme ça, pour l'afficher pendant le chargement de l'URL, je l'ai fait dans une nouvelle activité, mais je ne fais pas sais pas ce que je peux faire pour fermer la troisième activité lorsque l'url est chargée ... Est-ce que quelqu'un peut m'aider?

Ceci est mon code ... Merci!

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);


    }



}
27
Migua

Je le fais en affichant initialement une ImageView, puis une fois la WebView chargée, en échangeant leur visibilité comme ceci

        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");

Et ma disposition XML ressemble à ceci

    <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"
        />
62
davehale23

J'ai une activité. 1 fichier xml et 1 Java. À l'intérieur du fichier xml, j'ai:

  1. WebView
  2. ImageView, logo de ma candidature,
  3. ProgressBar et
  4. TextView, version de l'application.

Code 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>

Code 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();

}

}

}

Désolé pour aucune description. S'il y aurait besoin de description, je décrirai en détail tout le code.

14