2 lidaming and LiDaming_and 于 2012.11.20 14:27 提问

在WebView中加载HTML页面时怎么显示进度对话框

在程序中使用webview视图显示html页面。我想在页面加载时显示一个进度对话框。但是我加载页面后,没有显示进度对话框。我使用AsyncTask,进度对话框还是没有显示。我使用的以下代码:

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

如果我使用google文档显示web页面,html tag能显示,但是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);  

请求大家的帮忙。

4个回答

loFataMer
loFataMer   2012.11.20 17:41
已采纳
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);
robake
robake   2012.11.20 17:47

放个进度条,使用下边的代码

    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 +"加载中...", 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, "加载结束...", Toast.LENGTH_SHORT).show();
         }else{
              v.setVisibility(8);
              //Toast.makeText(mContext, "加载中...", Toast.LENGTH_SHORT).show();
          }
        }
    });
robake
robake 代码中R.id.progressBar1就是进度条,s.setProgress(newProgress);就是给进度条写值
接近 5 年之前 回复
curie_87
curie_87   2012.11.20 17:47

以下方法可以实现:

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

new Thread ( new Runnable()
{
     public void run()
     {
      // 把你自己的代码放在这儿
     }
}).start();

 Handler progressHandler = new Handler() 
 {

     public void handleMessage(Message msg1) 
     {
         progDailog.dismiss();
     }
 }
xiaoyi848699
xiaoyi848699   2014.02.24 11:13

不好!界面没加载完就消失啦!

Csdn user default icon
上传中...
上传图片
插入图片