2011-09-28 6 views
6

Webページと視覚的なプログレス・ダイアグラム・スタイルを水平に解析し、それをバイト単位でインクリメントしたいのですが、それは可能でしょうか?Android:AsyncTask、ProgressDialogインクリメントの更新方法

+0

はい、exempleがありますしてくださいあるhttp://goo.gl/eeiu5 – Matthieu

+0

可能ですか? – MimmoG

+0

この例のリンクを参照してください。 https://sites.google.com/site/androidhowto/how-to-1/create-a-custom-progress-bar-using-asynctask – Uttam

答えて

20

は、ProgressDialogを作成し、このような何かを試してみてください。

ProgressDialog mProgressDialog = new ProgressDialog(Your_Activity.this); 
mProgressDialog.setMessage("Here you can set a message"); 
mProgressDialog.setIndeterminate(false); 
mProgressDialog.setMax(100); 
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
mProgressDialog.show(); 
MyAsyncTask obj = new MyAsyncTask(); 
obj.execute("url"); 

あなたのAsyncTaskクラス。

private class MyAsyncTask extends AsyncTask<String, Integer, String>{ 
    @Override 
    protected String doInBackground(String... url) { 
     int count; 
     try { 
      URL url = new URL(url[0]); 
      URLConnection connection = url.openConnection(); 
      connection.connect(); 
      // this will be useful so that you can show a tipical 0-100% progress bar 
      int length = connection.getContentLength(); 

      // downlod the file 
      InputStream input = new BufferedInputStream(url.openStream()); 
      OutputStream output = new FileOutputStream("/sdcard/file_name.txt"); 

      byte data[] = new byte[1024]; 

      long total = 0; 

      while ((count = input.read(data)) != -1) { 
       total += count; 
       // publishing the progress.... 
       publishProgress((int)(total*100/length)); 
       output.write(data, 0, count); 
      } 
      output.flush(); 
      output.close(); 
      input.close(); 
     } catch (Exception e) {} 
     return null; 
    } 
    @Override 
    public void onProgressUpdate(String... args){ 
     mProgressDialog.setProgress(args[0]); 
    } 
    } 
} 

あなたはAndroidManifestファイルにこれらの許可のを与える必要があります。

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
+0

一部のURLでは、常に-1を取得し、このコードを使用します。HttpURLConnection connection =(HttpURLConnection)url.openConnection(); \t \t connection.setRequestMethod( "HEAD"); \t \t connection.connect(); \t \t int length = connection.getContentLength(); –