2015-06-22 2 views
0

У меня есть класс unzip, который я использовал с учебного сайта, отлично работает, но я хотел бы добавить индикатор прогресса в процесс распаковки, я искал исходный код, но не знаю, где в классе я должен сказать. Это класс decompress.java:Добавить индикатор выполнения для распаковки процесса

import android.util.Log; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileOutputStream; 
import java.util.zip.ZipEntry; 
import java.util.zip.ZipInputStream; 

/** 
* 
* @author jon 
*/ 
public class Decompress { 
    private String _zipFile; 
    private String _location; 

    public Decompress(String zipFile, String location) { 
    _zipFile = zipFile; 
    _location = location; 

    _dirChecker(""); 
    } 

    public void unzip() { 
    try { 
     FileInputStream fin = new FileInputStream(_zipFile); 
     ZipInputStream zin = new ZipInputStream(fin); 
     ZipEntry ze = null; 
     while ((ze = zin.getNextEntry()) != null) { 
    Log.v("Decompress", "Unzipping " + ze.getName()); 

    if(ze.isDirectory()) { 
     _dirChecker(ze.getName()); 
    } else { 
     FileOutputStream fout = new FileOutputStream(_location + ze.getName()); 
     for (int c = zin.read(); c != -1; c = zin.read()) { 
     fout.write(c); 
     } 

     zin.closeEntry(); 
     fout.close(); 
    } 

     } 
     zin.close(); 
    } catch(Exception e) { 
     Log.e("Decompress", "unzip", e); 
    } 

    } 

    private void _dirChecker(String dir) { 
    File f = new File(_location + dir); 

    if(!f.isDirectory()) { 
     f.mkdirs(); 
    } 
    } 
} 

И я называю это так в моей деятельности:

Decompress d = new Decompress(zipFile, unzipLocation); 
d.unzip() 
+0

Похоже, вы слишком ленитесь, чтобы что-то сделать самостоятельно. Вы нашли расстегивающий код, и теперь вы хотите, чтобы кто-то показывал прогресс вместо вас? –

+0

Пожалуйста, взгляните на мой ответ. –

ответ

0

Выполните следующие действия:

1.

Decompress d = new Decompress(CurrentActivity.this,zipFile, unzipLocation); 
d.unzip(); 

2.

Activity _activity; 
     private String _zipFile; 
     private String _location; 
     ProgressDialog progressDialog =null; 
     public Decompress(Activity activity,String zipFile, String location) { 
      _zipFile = zipFile; 
      _location = location; 
      this._activity = activity; 
      _dirChecker(""); 
      progressDialog = new ProgressDialog(activity, 
        android.R.style.Theme_Panel); 
      progressDialog.setMessage("Please wait..."); 
      progressDialog.setCancelable(false); 
     } 








public void unzip() { 
     try { 
      progressDialog.show(); // Showing Progress Dialog 
      FileInputStream fin = new FileInputStream(_zipFile); 
      ZipInputStream zin = new ZipInputStream(fin); 
      ZipEntry ze = null; 
      while ((ze = zin.getNextEntry()) != null) { 

       Log.v("Decompress", "Unzipping " + ze.getName()); 

       if(ze.isDirectory()) { 
        _dirChecker(ze.getName()); 
       } else { 
        FileOutputStream fout = new FileOutputStream(_location + ze.getName()); 
        for (int c = zin.read(); c != -1; c = zin.read()) { 
         fout.write(c); 
        } 

        zin.closeEntry(); 
        fout.close(); 
       } 

      } 
      progressDialog.cancel(); // cancelling Dialog. 
      zin.close(); 
     } catch(Exception e) { 
      progressDialog.cancel(); 
      Log.e("Decompress", "unzip", e); 
     } 

    } 

    private void _dirChecker(String dir) { 
     File f = new File(_location + dir); 

     if(!f.isDirectory()) { 
      f.mkdirs(); 
     } 
    } 
} 
+0

Индикатор выполнения не отображается, я не уверен, где проблема может быть – user3560827

Смежные вопросы