2013-08-12 4 views
3

Я попытался создать индикатор выполнения в android, так как вы знаете, что индикатор выполнения получает int для прогресса, но мне нужно передать float в progress bar, что я могу сделать?Прогресс bar pass float аргумент

private Runnable myThread = new Runnable(){ 
    @Override 
    public void run() { 
       mypb = mypb + 100/time; 
       pb.setProgress(mypb); 
    } 
}; 

ответ

2

setProgress() не имеет поплавка аргумент. Поэтому вы не можете установить значение float.

но вы можете отдать свое значение с плавающей точкой в ​​целое каждого конкретного

pb.setProgress((int)mypb); 
12

Вы, наверное, это решается сейчас, но мой обходной путь для этого множится на 10 или 100, в зависимости от количества знаков после запятой ,

Если значение, 30,59 и ваш максимум составляет 100, а затем просто умножить оба значения на 100. Что даст вам 3059 и 10000.

0

Вы можете математикой, сколько обновлений будет ваш прогресс путем деления всего на столько частей, которые вы хотите обновить, затем получите напоминание о индексе цикла и первой переменной.

if ((i % (earthquakes.length()/20)) == 0) { 
progCount = (int) ((i/(float) earthquakes.length()) * 100); 
publishProgress(); 
} 

В этом случае я разделил длину на 20 и обновил каждые 5%. Конечно, вам нужно умножить на конец на 100 и отличить int, чтобы иметь интервал между 0 и 99. Если вы хотите, добавьте один, чтобы сделать его от 1 до 100.

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