2012-05-02 3 views
1

У меня есть приложение, которое показывает прогресс загрузки в индикаторе выполнения.Скачать Прогресс в Android

while ((chunkBytes = httpInputStream.read(outputByte, 0, 1024)) != -1) { 

       bytesRead = bytesRead + chunkBytes; 
       // write contents to the file 
       fileOutputStream.write(outputByte, 0, (int) chunkBytes); 
       // publish the progress of downloading.. 
       publishProgress((int)((bytesRead)*100/fileSize)); 

      } 

Но то, что я пытаюсь сделать, это - вместо этого 58/100 .. (? Вторичный прогресса) хотел бы, чтобы отобразить 3,5 Мб/5,5 Мб .... (MBS скачивания/Total MB) ниже этого прогресса .. Я попытался изменить вторичный прогресс, но не помог .. Есть ли другой способ?

+0

Переменные 'bytesRead' и' fileSize' содержат значение no. прочитанных байтов и итоговых нет. байтов для чтения, правильно? Поэтому просто разделите их каждый на 1048576, чтобы преобразовать эти числа в мегабайты! Его справедливые юниты! –

+0

Проблема будет с показом этих «мб». Я не думаю, что есть простой способ сделать это. Может быть, через отражение? Или, может быть, будет проще реализовать собственный ProgressDialog. – Sver

+0

Нет, я не беспокоюсь о преобразовании этих МБ в байты .. (а не об устройстве), все это прекрасно работает. Когда вы загружаете приложения из Google Play Store, вторичный прогресс показывает это. (Первичный прогресс отображается - процент .. чуть ниже, это показывает, что это то, что я ищу. –

ответ

0

Если вы хотите изменить то, что отображается в вашем индикаторе выполнения, вы должны вызвать setProgressNumberFormat() со строковым параметром, в котором говорится, что вы хотели бы видеть, например, «% 1d /% 2d» отображает значение по умолчанию " 20/100 ", а"% 1d MB of% 2d MB "покажет то, о чем вы просите. «% 1d» - ваше текущее значение прогресса, а «% 2d» - ваше максимальное значение, которое вы можете изменить с помощью setMax(int max).

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