2012-03-06 2 views
25

У меня есть приложение, у которого есть 2 действия, первый запускает второй, чтобы загрузить URL-адрес в веб-просмотр.Заставка экрана при загрузке url в webview в приложении Android

Это работает, но пока URL-адрес загружается, веб-просмотр выглядит пустым ... тогда я хочу создать заставку или что-то в этом роде, чтобы показать ее во время загрузки URL-адреса, я сделал это в новом действии , но я не знаю, что я могу сделать, чтобы закрыть третье действие, когда URL загружен ... Пожалуйста, кто-нибудь может мне помочь?

Это мой код ... Спасибо!

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


    } 



} 

ответ

59

Я делаю это сначала показывающей ImageView, а затем после загрузки WebView, обменивая их видимость, как этот

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

И мой макет XML выглядит следующим образом

<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

Спасибо! это работает :) – Migua

+0

спасибо, это помогло мне выделить. – David

+1

Он работает, но мерцает ... –

13

I имеют одно действие. 1 xml-файл и 1 класс java. Внутри XML-файл у меня есть:

  1. WebView
  2. ImageView, логотип моего приложения,
  3. ProgressBar и
  4. TextView, версия приложения.

Код 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> 

Код 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(); 

} 

} 

} 

Жалко без описания. Если потребуется описание, я подробно опишу весь код.

+0

Это потрясающе. благодаря! – smarble

+0

Это точно. что я хочу. Большое спасибо .. :) – Laxmeena

+0

Отлично. Спасибо, что поделился –

Смежные вопросы