2012-02-27 41 views
10

Khi sử dụng chế độ xem web để hiển thị các trang html,Cách hiển thị thanh tải khi hiển thị với Webview.loadUrl trong android?

sẽ có vài giây trang trống trước khi hiển thị xong.

Để có trải nghiệm người dùng tốt hơn, có cách nào để làm cho nó hiển thị hình ảnh tải trong vài giây đó không?

+1

Kiểm tra hướng dẫn này: [Android - Tải WebView với ProgressBar] (http://goo.gl/YZeuG) –

Trả lời

13

Hãy thử điều này

 ...... 
     webView.setWebChromeClient(new WebChromeClient() { 
      public void onProgressChanged(WebView view, int progress) { 
       activity.setTitle("Loading..."); 
       activity.setProgress(progress * 100); 

       if(progress == 100) 
       activity.setTitle(R.string.app_name); 
      } 
     }); 
     ... 
18

Hãy thử phân khúc này của mã. Hiển thị progressDialog hoặc hình ảnh hoặc bố trí bất cứ điều gì bạn muốn trong onPageStarted() & ẩn trong onPageFinished()

 webview.setWebViewClient(new WebViewClient() { 
      @Override 
      public void onPageStarted(WebView view, String url, Bitmap favicon) 
      { 
       // TODO show you progress image 
       super.onPageStarted(view, url, favicon); 
      } 

      @Override 
      public void onPageFinished(WebView view, String url) 
      { 
       // TODO hide your progress image 
       super.onPageFinished(view, url); 
      } 
     }); 
+2

Đó là giải pháp đủ tốt khi bạn không muốn sử dụng 'WebChromeClient' (trong câu trả lời được chấp nhận), nhưng một 'WebViewClient'. –

5

Hãy thử mã này để hiển thị một ProgressDialog

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

     @Override 
     public void onProgressChanged(WebView view, int progress) { 
      if (mProgress == null) { 
       mProgress = new ProgressDialog(getActivity()); 
       mProgress.show(); 
      } 
      mProgress.setMessage("Loading " + String.valueOf(progress) + "%"); 
      if (progress == 100) { 
       mProgress.dismiss(); 
       mProgress = null; 
      } 
     } 
    }); 
2

Đây là những gì làm việc cho tôi trong Kotlin:

private fun setupWebView() { 

    val webViewClient: WebViewClient = object: WebViewClient() { 

     override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean { 
      view?.loadUrl(request?.url.toString()) 
      return super.shouldOverrideUrlLoading(view, request) 
     } 

     override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) { 
      showProgressDialog() 
      super.onPageStarted(view, url, favicon) 
     } 

     override fun onPageFinished(view: WebView?, url: String?) { 
      hideProgressDialog() 
      super.onPageFinished(view, url) 
     } 
    } 
    webView.webViewClient = webViewClient 

    webView.settings.javaScriptEnabled = true 
    webView.settings.defaultTextEncodingName = "utf-8" 
} 
+0

Lên cho Kotlin :) –

1

Mã đơn giản cho Java--

webView.setWebViewClient(new WebViewClient{ 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     pdialog.show(); 
    } 
    @Override 
    public void onPageFinished(WebView view, String url) 
    { 
     pdialog.hide(); 
    }); 
Các vấn đề liên quan