2017-03-11 4 views
2

WebViewをロードして、progressCircleを使用してこれを追跡しています。ただし、WebView内のすべてのイメージがロードされるまで、進捗サークルは正常に終了しません。ページが読み込まれた直後に、イメージが読み込まれた数にかかわらず、イメージを閉じるようにします。今のところ、私のコードは次のとおりです。閉じるほとんどのページがWebViewに読み込まれた後にProgressCircleを閉じます。

webView.setWebChromeClient(new WebChromeClient() { 
      private ProgressDialog progressCircle; 

      @Override 
      public void onProgressChanged(WebView view, int progress) { 
       if (progressCircle == null) { 
        progressCircle = new ProgressDialog(view.getContext(), R.style.WebViewLoadingCircle); 
        progressCircle.setCancelable(true); 
        progressCircle.setProgressStyle(android.R.style.Widget_ProgressBar_Small); 
        try { 
         progressCircle.show(); 
        } catch (Exception e) { 
         Log.e(TAG, "Exception while showing progress circle", e); 
        } 
       } 

       if (progress == 100) { 
        progressCircle.dismiss(); 
        progressCircle = null; 
       } 
      } 
     }); 

どのように私は、すぐにWebページがロードされているようにprogressCircleを消すことができますか? (私はプログレス変数で遊ぶことを含め、多くのことを試しましたが、どれも役に立たなかった)。ありがとう!あなたのタスクのための

答えて

2
webView.setWebViewClient(new WebViewClient() { 

    public void onPageFinished(WebView view, String url) { 
     // do your stuff here 
       if (progressCircle != null) { 
        progressCircle.dismiss(); 
        progressCircle = null; 
       } 
    } 
}); 

この完全なコード:

boolean loadingFinished = true; 
    boolean redirect = false; 

    mWebView.setWebViewClient(new WebViewClient() { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) { 
      if (!loadingFinished) { 
       redirect = true; 
      } 

     loadingFinished = false; 
     webView.loadUrl(urlNewString); 
     return true; 
     } 

     @Override 
     public void onPageStarted(WebView view, String url) { 
      loadingFinished = false; 
      //SHOW LOADING IF IT ISNT ALREADY VISIBLE 
if (progressCircle == null) { 
        progressCircle = new ProgressDialog(view.getContext(), R.style.WebViewLoadingCircle); 
        progressCircle.setCancelable(true); 
        progressCircle.setProgressStyle(android.R.style.Widget_ProgressBar_Small); 
        try { 
         progressCircle.show(); 
        } catch (Exception e) { 
         Log.e(TAG, "Exception while showing progress circle", e); 
        } 
       } 
     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 

         if (progressCircle != null) { 
         progressCircle.dismiss(); 
         progressCircle = null; 
        } 

     } 
    }); 

それをお楽しみください!

+0

ありがとう、それはうまくいったが、問題がある。これは動作しますが、初めてアプリケーションを開くときには動作しません。アプリケーションを開いた後に初めてWebviewが開くと、Webviewの連続した開口部が(アプリケーションを閉じずに)必要な結果につながりますが、すべてがロードされるのを待っています。回避策はありますか? – pranavnairtech

+0

こんにちは、あなた、あなたは正しくイベントを作成していません。 –

関連する問題