2012-03-13 69 views
3

我想在我的webview应用程序中实现一个加载对话框,但无论我做什么,只是不会工作。Android的webview加载对话框

我要的是下面的,每次有人点击了装载有对话框弹出这样的网页视图链接:

loading dialog

当加载完成后它消失。任何人都可以告诉我如何在自己的源代码中完成它?我尝试了很多东西,但总是有一个问题,所以我真的不知道该怎么做。

这是我WebviewActivity:

import android.content.res.Configuration; 
import android.os.Bundle; 
import android.view.MotionEvent; 
import android.view.View; 
import android.view.Window; 
import android.webkit.WebSettings; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class WebviewActivity extends MainActivity { 

    private WebView myWebView; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
     setContentView(R.layout.main); 

     myWebView = (WebView)findViewById(R.id.webview);   
     WebSettings webSettings = myWebView.getSettings(); 
     webSettings.setJavaScriptEnabled(true);   
     myWebView.setWebViewClient(new WebViewClient()); 

     myWebView.requestFocus(View.FOCUS_DOWN); 
     myWebView.setOnTouchListener(new View.OnTouchListener() { 
      public boolean onTouch(View v, MotionEvent event) { 
       switch (event.getAction()) { 
        case MotionEvent.ACTION_DOWN: 
        case MotionEvent.ACTION_UP: 
         if (!v.hasFocus()) { 
          v.requestFocus(); 
         } 
         break; 
       } 
       return false; 
      } 
     }); 
    } 

    @Override 
    public void onResume() { 
     super.onResume(); 
     if (isOnline() == true) 
      myWebView.loadUrl(webLink); 
     else if (isOnline() == false) 
      showNoConnectionDialog(); 
    } 

    @Override 
    public void onConfigurationChanged(Configuration newConfig){   
     super.onConfigurationChanged(newConfig); 
    } 
} 

非常感谢您的帮助!

+0

使用异步任务这个......不要做自定义进度对话框。请参阅此链接http://as400samplecode.blogspot.in/2011/09/android-asynctask-httpclient-with.html – Aerrow 2012-03-13 14:40:26

+0

好吧,但我不是真的那样,所以我不知道如何能够实现这一点.. 。 – MartijnG 2012-03-13 15:42:07

回答

2

这是我的最终解决方案:

myWebView.setWebViewClient(new WebViewClient(){ 
     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String url) { 
      progressDialog.show(); 
      view.loadUrl(url); 
      return true;     
     } 
     @Override 
     public void onPageFinished(WebView view, final String url) { 
      progressDialog.dismiss(); 
     } 
    }); 
5

你必须重写这样的WebViewClient,

 webview.setWebViewClient(new WebViewClient(){ 

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

       progressDialog.cancel(); 


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

       progressDialog.show(); 
      } 
     }); 

webview.loadUrl(TwitterUrl); 
0

这有可能与WebChromeClient。它为我工作。

代码片段:

progressDialog.show(); // Add before page load 
webView.setWebChromeClient(new HelpWebChromeClient()); 
private class HelpWebChromeClient extends WebChromeClient { 
    @Override 
    public void onProgressChanged(WebView view, int newProgress) { 
    if(newProgress == 100) 
     progressDialog.dismiss(); 
    } 
}