2012-02-07 112 views
5

我正在使用Web视图来显示HTML页面,并且我希望在加载页面之前显示进度对话框。完成后,对话框必须消失。我为此使用了AsyncTask,但对话框不显示。见下面我的代码:如何在WebView中加载HTML页面时显示进度对话框

class DownloadAysnc extends AsyncTask<String, String, Void> 
    { 
    ProgressDialog progressDialog; 
     @Override 
      protected void onPreExecute() { 
      super.onPreExecute(); 
      progressDialog = ProgressDialog.show(OverView.this, "", "Please Wait ..."); 
     } 

     @Override 
      protected Void doInBackground(String... arg0) { 
      webView.loadUrl("http://marico.com/html/investor/overview.php"); 
     return null; 
     } 

     @Override 
      protected void onPostExecute(Void result){ 
      super.onPostExecute(result); 
      progressDialog.dismiss(); 
     } 
    } 

如果我拿谷歌文档的帮助,以显示该网页,然后将HTML标记显示,而不是页面。以下是该代码:

String url = "http://google.co.in/"; 
String googleDocsUrl = "http://docs.google.com/viewer?url="+url; 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.parse(googleDocsUrl), "text/html"); 
startActivity(intent); 

this.myWebView.loadUrl(googleDocsUrl); 

有人可以帮助我吗?

回答

13

使用此代码:

webView.setWebViewClient(new WebViewClient() { 
    ProgressDialog prDialog; 
    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     prDialog = ProgressDialog.show(Activity.this, null, "loading, please wait..."); 
     super.onPageStarted(view, url, favicon); 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     prDialog.dismiss(); 
     super.onPageFinished(view, url); 
    } 
}); 

webView.loadUrl(url); 
+0

我应该放什么(WebView视图,String url,**位图图标**)它给我的**位图图标**行的编译时错误。我应该如何放置它们。 – 2012-02-07 05:53:43

+0

非常感谢! – 2012-02-07 05:55:26

+0

非常感谢...它救了我 – Noman 2013-05-29 06:50:13

1

你可以试试下面的代码,

progDailog = ProgressDialog.show(loginAct,"Process ", "please wait....",true,true); 

new Thread (new Runnable() 
{ 
    public void run() 
    { 
     // your code goes here 
    } 
}).start(); 

Handler progressHandler = new Handler() 
{ 

    public void handleMessage(Message msg1) 
    { 
     progDailog.dismiss(); 
    } 
} 
2

您可以显示WebViewProgress在WebView中的标题栏。 Here是一个完整的示例,它显示WebViewTitle栏中的ProgressStatus

3
v.setWebChromeClient(new WebChromeClient(){ 
     @Override 
     public void onProgressChanged(WebView view, int newProgress) { 
      WebView v=(WebView)findViewById(R.id.wv); 
      //Toast.makeText(mContext, v.getUrl() + newProgress +"uploading...", Toast.LENGTH_SHORT).show(); 
      ProgressBar s=(ProgressBar)findViewById(R.id.progressBar1); 
      s.setMax(100); 
      s.setProgress(newProgress); 
      if(newProgress==100){       
       v.setVisibility(0); 
       //Toast.makeText(mContext, "upload finished...", Toast.LENGTH_SHORT).show(); 
     }else{ 
       v.setVisibility(8); 
       //Toast.makeText(mContext, "uploading...", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    }); 
+1

欢迎来到Stack Overflow。你能否详细说明你的答案。 – 2012-11-21 02:40:13

+1

特别是当您回答已经接受并接受问卷答案的旧问题时,请提供一些解释。你的答案与以前接受的答案有什么不同,甚至更好? – 2012-11-21 02:43:06