2013-10-09 4 views
0

J'ai un webView dans lequel un site web externe est chargé. Actuellement, j'ai le ci-dessous qui affiche une icône de chargement alors que la page a terminé le chargement:Afficher l'icône de chargement lors du chargement de la page Webview et javascript dans la page

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

      } 
     }); 

Cela fonctionne bien, mais dans la même activité il y a un bouton, l'utilisateur peut appuyer sur ce qui va charger javascript dans la page Web actuellement chargée. Ce dont j'ai besoin, c'est que l'icône de progression s'affiche pendant le chargement du javascript.

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

Répondre

0

Vous pouvez obtenir ce que vous voulez en utilisant un WebAppInterface javascript comme grupe here.

Le concept principal est que, vous créez une interface 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); 
    } 
} 

Ajouter l'interface à votre webView

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

Enfin, dans votre fonction javascript vous pouvez appeler

ProgressInterface.showProgress(); 

et

ProgressInterface.showProgress(); 
Questions connexes