ProgressBar - Richtigen Prozess anzeigen

  • Antworten:5
Gelöschter Account
  • Forum-Beiträge: 136

18.04.2011, 13:14:07 via Website

Hallo zusammen,

folgender Code:

1protected Void doInBackground(Void... arg0) {
2 // TODO Auto-generated method stub
3
4 String zipFile = Environment.getExternalStorageDirectory() + "/pano.zip";
5 final String unzipLocation = Environment.getExternalStorageDirectory() + "/panoramen/";
6 File f = new File(unzipLocation);
7
8 if(!f.isDirectory()) {
9 f.mkdirs();
10 }
11
12 try {
13 FileInputStream fin = new FileInputStream(zipFile);
14 ZipInputStream zin = new ZipInputStream(fin);
15 ZipEntry ze = null;
16 while ((ze = zin.getNextEntry()) != null) {
17
18 FileOutputStream fout = new FileOutputStream(unzipLocation + ze.getName());
19 for (int c = zin.read(); c != -1; c = zin.read()) {
20 fout.write(c);
21 myProgress++;
22 publishProgress(myProgress);
23 }
24 zin.closeEntry();
25 fout.close();
26 }
27 zin.close();
28 } catch(Exception e) {
29 Log.e("Decompress", "unzip", e);
30 }
31 return null;
32 }
33 @Override
34 protected void onProgressUpdate(Integer... values) {
35 // TODO Auto-generated method stub
36 progressBar.setProgress(values[0]);
37 }

Hier werden Dateien aus einem zip Archiv entpackt. Hier soll nun ein ProgressDialog angezeigt werden, der den Fortschritt immer weiter anzeigt. An sich klappt das auch wunderbar nur einmal ist er zu langsam, dh. die Dateien sind alle entpackt aber der Balken ist nicht ganz durch gelaufen, oder er ist zu schnell und rennt sofort durch. Nun ist meine Frage, wo muss ich das "myProgress++" und die Ausgabe richtig hinsetzen, damit er richtig zählt? Oder kann ich mir irgentwie die länge in Prozent ausgeben und er zählt den Prozentualen Fortschritt?

So wie es jetzt in dem Code ist, ist er zu schnell.

Grüße,
Malte

— geändert am 18.04.2011, 13:15:18

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

18.04.2011, 13:18:04 via Website

naja ich vermute mal du musst zuerst

min und max progress setzen, damit er richtig anzeigen kann

swordiApps Blog - Website

Antworten
Rafael K.
  • Forum-Beiträge: 2.359

18.04.2011, 13:30:05 via Website

Wird wohl daraus resultieren, dass die Dateien, die du entpackst unterschiedlich groß sind und die Buffer unterschiedlich befüllt werden.

Standardmäßig zählt der Progress von 0 bis 10000.

Wenn du die Gesamtgröße kennst, kannst du als Alternative zu Markus' Post deinen Wert auf diese Skala umrechnen.

— geändert am 18.04.2011, 13:30:39

Antworten
Gelöschter Account
  • Forum-Beiträge: 136

18.04.2011, 13:37:08 via Website

Klasse, danke, hatte kein max angegeben. Jetzt ist es realistischer, allerdings noch nicht passend.

Also die Gesamtgröße kenne ich. Rechnet er denn mit bytes?

Grüße,
Malte

Antworten
Gelöschter Account
  • Forum-Beiträge: 136

18.04.2011, 14:10:13 via Website

Das dass langsam ist, habe ich schon gemerkt ;) Leider geht die Seite zur Zeit nicht.

Sie geht wieder :)

Grüße,
Malte

— geändert am 18.04.2011, 14:19:58

Antworten