2010-03-22 102 views

回答

2

對於Android Developers website有一個非常好的教程。它顯示瞭如何創建在整個Android程序中使用的「旋轉輪」進度對話框,甚至還有一些關於如何在單獨的線程中處理加載的基礎知識,以防止應用程序在加載時凍結。

+4

在網頁加載方面,你可以附加一個'WebViewClient'到'WebView',並找出在加載頁面時,讓你知道當你可以關閉該對話框。 – CommonsWare 2010-03-22 22:46:06

+0

好吧,但如何重新啓動progressDialog時點擊webview內的鏈接? – 2010-10-21 22:44:37

2

如果你的問題是「我怎麼找出來的時候,頁面加載?」,則:

創建WebViewClient的自定義子類,覆蓋onPageFinished()

附上您WebViewClient子類的實例通過setWebViewClient您的WebView()

設置無限期進度指示器(欄,對話框,RotateAnimation等)

progressDialog = ProgressDialog.show(this, "", getText(R.string.progressDialogText), true); 

上的WebView

調用使用loadURL()之前有onPageFinished()擺脫進度指示器(progressDialog.dismiss())

15

我使用進度這一點。有了這樣的佈局:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout [...]> 
    <WebView android:id="@+id/WebView" 
    android:layout_width="fill_parent" android:layout_height="fill_parent"/> 
    <ProgressBar android:id="@+id/ProgressBar" android:layout_centerInParent="true" 
    android:layout_width="wrap_content" android:layout_height="wrap_content" 
    style="?android:attr/progressBarStyleLarge" 
    android:visibility="gone"/> 
</RelativeLayout> 

我隱藏和使用顯示進度指示器:

WebView webView = (WebView) findViewById(R.id.WebView); 
final ProgressBar progess = (ProgressBar) findViewById(R.id.ProgressBar); 
webView.setWebViewClient(new WebViewClient() { 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
    progess.setVisibility(View.VISIBLE); 
    } 
    public void onPageFinished(WebView view, String url) { 
    progess.setVisibility(View.GONE); 
    } 
} 
1

初始化您的視圖後只調用此方法

startWebView(web_view,"Your Url");這裏web_view是您的初始化的WebView對象。該startWebView()是如下:

private void startWebView(WebView webView,String url) { 
webView.setWebViewClient(new WebViewClient() { 
      ProgressDialog progressDialog; 

      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return false; 
      } 

      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) { 
       super.onPageStarted(view, url, favicon); 
      } 

      public void onLoadResource (WebView view, String url) { 

        if (progressDialog == null) { 
         progressDialog = new ProgressDialog(SponceredDetailsActivity.this); 
         progressDialog.setMessage("Loading..."); 
         progressDialog.show(); 
        } 

      } 
      public void onPageFinished(WebView view, String url) { 
       try{ 
        if (progressDialog.isShowing()) { 
         progressDialog.dismiss(); 
         progressDialog = null; 
        } 

       }catch(Exception exception){ 
        exception.printStackTrace(); 
       } 
      } 

     }); 

     webView.getSettings().setJavaScriptEnabled(true); 
     webView.loadUrl(url); 
    } 

有時,如果URL是死它會重定向,它會前onPageFinished方法來onLoadResource()。出於這個原因,進度條不會解僱。要解決此問題,請參見my this Answer

謝謝:)

相關問題