2013-10-09 100 views
0

我有一個webView中加載一個外部網站。 目前,我有以下這將顯示加載圖標,而頁面加載完成:顯示加載圖標時,加載webview頁面和JavaScript到頁面

webView.setWebViewClient(new WebViewClient() { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) { 
       view.loadUrl(url); 
       return false; 
      } 
      public void onPageStarted(WebView view, String url, Bitmap favicon) 
      { 
       super.onPageStarted(view, url, favicon); 
       progressBar.setVisibility(View.VISIBLE); 
      } 
      public void onPageFinished(WebView view, String url) { 
       // TODO Auto-generated method stub 
       super.onPageFinished(view, url); 
       progressBar.setVisibility(View.GONE); 
       if (webView.canGoBack()){ 
        left.setImageResource(R.drawable.ic_arrowleft); 
       }else{ 
        left.setImageResource(R.drawable.ic_arrowleft_gray); 
       } 
       if (webView.canGoForward()){ 
        right.setImageResource(R.drawable.ic_arrowright); 
       }else{ 
        right.setImageResource(R.drawable.ic_arrowright_gray); 
       } 

      } 
     }); 

這工作得很好,但在相同的活動有一個按鈕,用戶可以按下,將一些JavaScript加載到當前加載的網頁。 我需要的是在JavaScript加載到時顯示進度圖標。

private OnClickListener OnClick_script = new OnClickListener() { 
     public void onClick(View v) { 
      webView.loadUrl("javascript: function .....); 
     } 
    }; 

回答

0

您可以使用JavaScript WebAppInterface作爲示例here來實現您想要的功能。

的主要概念是,你創建一個JavaScript接口

private class ShowProgressInterface { 
    ProgressBar progressBar; 


    ShowProgressInterface(ProgressBar progressBar) { 
     this.progressBar = progressBar; 
    } 

    @JavascriptInterface 
    public void showProgress() { 
     progressBar.setVisibility(View.VISIBLE); 
    } 

    @JavascriptInterface 
    public void hideProgress() { 
     progressBar.setVisibility(View.GONE); 
    } 
} 

接口添加到網頁視圖

webView.addJavascriptInterface(new ShowProgressInterface(progressBar), "ProgressInterface"); 

最後,在你的javascript函數可以調用

ProgressInterface.showProgress(); 

ProgressInterface.showProgress();