7

我试图在 android 中构建一个进度条,如您所知,progress bar get int for progress,但我需要将 float 传递给进度条,我该怎么办?

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

3 回答 3

21

您现在可能已经解决了,但我的解决方法是乘以 10 或 100,具体取决于小数位数。

如果你的值是 30.59 并且你的最大值是 100,那么只需将这两个值乘以 100。这将得到 3059 和 10000。

于 2014-01-24T12:21:36.703 回答
3

setProgress() 没有浮点参数。所以你不能设置浮点值。

但是您可以将浮点值转换为 int by-

 pb.setProgress((int)mypb);
于 2013-08-12T16:54:15.560 回答
0

您可以通过将总数划分为您想要更新的部分来计算您的进度将有多少更新,然后获得循环索引和第一个变量的提醒。

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

在这种情况下,我将长度除以 20,它将每 5% 更新一次。当然,您需要在最后乘以 100 并转换 int 以使 int 介于 0 和 99 之间。如果您愿意,可以加一个使其从 1 到 100。

于 2018-02-06T12:08:11.513 回答