android - 在Android中将数据加载到webview之前显示加载

标签 android webview progress-bar

当此代码运行时,如何显示加载图像?

HttpClient client = new DefaultHttpClient();
      HttpGet request = new HttpGet("http://www.google.com");
      try
      {
          HttpResponse response = client.execute(request);
          BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
          String line;
          StringBuilder str = new StringBuilder();
          while((line = reader.readLine()) != null) {
              str.append(line);
      }
          objwebview.loadData(str.toString(), "text/html", "UTF-8");
  }
  catch(Exception e)
  {
      e.printStackTrace();
      objwebview.loadData(e.toString(), "text/html", "UTF-8");
  }

最佳答案

使用 AsyncTask 更改您的代码以显示加载栏

private class Getdataasynktask extends AsyncTask<String, Void, String> {

ProgressDialog progressDialog = new ProgressDialog(context);

      @Override
      protected void onPostExecute(String result) {     
      // show loaging bar here

    progressDialog.setMessage("Loading...");
    progressDialog.setCancelable(false);
    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    progressDialog.setProgress(0); // set percentage completed to 0%
    progressDialog.show();
          
      }

      @Override
      protected String doInBackground(String... params) {
          String strdata= getdatafromserver();
            return strdata;
      }      

      @Override
      protected void onPreExecute(String result) {
        
       objwebview.loadData(result.toString(), "text/html", "UTF-8");
       // dismiss progress bar here
       progressDialog.dismiss();
      }
 public String getdatafromserver(){
     String line;
      objwebview.loadData(str.toString(), "text/html", "UTF-8");
      HttpClient client = new DefaultHttpClient();
      HttpGet request = new HttpGet("http://www.google.com");
      try
      {
          HttpResponse response = client.execute(request);
          BufferedReader reader = new BufferedReader(new 
                    InputStreamReader(response.getEntity().getContent()));
         
          StringBuilder str = new StringBuilder();
          while((line = reader.readLine()) != null) {
              str.append(line);
      }
          
  }
  catch(Exception e)
  {
      e.printStackTrace();
      line=e.toString();
     
  }
return line;
}
}

用于从 UI 线程执行此 AsyncTask 使用

new Getdataasynktask().execute("");

您还可以使用 onProgressUpdatepublishProgress 使用 AsyncTask 显示加载栏并将结果发布到 Ui 线程。欲了解更多信息,请参阅

http://developer.android.com/reference/android/os/AsyncTask.html

关于android - 在Android中将数据加载到webview之前显示加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13775212/

相关文章:

android - Bitcoinj 不会使用 Android Studio 编译到 Nexus 5

android - 获取有关前后摄像头预览大小的数据

java - Android XML 解析错误(无效 token ,格式不正确)

cocoa - Webview 对象导致 cocoa 崩溃

java - 在 webview 上设置 Imagebutton

android - 无法在 WebView 中使用自定义字体

Android 动画旋转

安卓 : Scale and change color Of Draw-able progress bar simultaneously

java - 为什么我从浏览器获得了正确的 URL 响应,但 Android 的 "HttpGet"中却是空的?

python - 将进度条写入文件