2012-03-06 31 views
25

Tôi có một ứng dụng, có 2 hoạt động, ứng dụng đầu tiên khởi chạy thứ hai để tải url vào một chế độ xem web.Màn hình Splash trong khi tải url trong chế độ xem web trong ứng dụng android

Nó hoạt động, nhưng khi url đang tải, chế độ xem web xuất hiện trống ... sau đó tôi muốn tạo màn hình giật gân hoặc thứ gì đó như thế này, để hiển thị trong khi url đang tải, tôi đã làm điều đó trong một hoạt động mới , nhưng tôi không biết tôi có thể làm gì để đóng hoạt động thứ ba khi url được tải ... Xin ai có thể giúp tôi?

Đây là mã của tôi ... Cảm ơn bạn!

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


    } 



} 

Trả lời

59

tôi làm điều đó bằng cách ban đầu cho thấy một ImageView và sau đó một lần WebView đã nạp, trao đổi tầm nhìn của họ như thế này

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

Và bố trí xml của tôi trông như thế này

<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

Cảm ơn bạn! nó hoạt động :) – Migua

+0

cảm ơn bạn, điều này đã giúp tôi allot. – David

+1

Nó hoạt động nhưng flickers ... –

13

tôi có một hoạt động. 1 tệp xml và 1 lớp java. Bên trong tập tin xml tôi có:

  1. WebView
  2. ImageView, logo của ứng dụng của tôi,
  3. ProgressBar và
  4. TextView, phiên bản ứng dụng.

Mã của 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> 

Mã của 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(); 

} 

} 

} 

Xin lỗi vì không có mô tả. Nếu có cần mô tả, tôi sẽ mô tả chi tiết toàn bộ mã.

+0

Điều này thật tuyệt vời. cảm ơn! – smarble

+0

Đây là chính xác. những gì tôi muốn. Cảm ơn rất nhiều .. :) – Laxmeena

+0

Tuyệt vời. Cám ơn vì đã chia sẻ –

Các vấn đề liên quan