"lzyzsd/CircleProgress" GitHub 项目的计算问题

Calculation issue with the "lzyzsd/CircleProgress" GitHub project

我的 lzyzsd CircleProgress 视图有问题。

这是我的代码:

        CircleProgress circle= (CircleProgress)v.findViewById(R.id.circle_progress);
        circle.setProgress();
        circle.setMax();

只有当我设置 setMax= 100 值和 setProgress= 0-100 值时,我才会得到一个合乎逻辑的答案 (0-100%),但是当我尝试插入其他值时,我会得到奇怪的计算结果。 示例:

circle.setProgress(5);
circle.setMax(10);

将给予 5% 而不是 50%

circle.setProgress(700);
circle.setMax(1000);

将给 0% insted of 70%

circle.setProgress(77);
circle.setMax(1000);

也会给70%

有人可以解释一下吗?我该如何解决?

尝试更改顺序:首先 setMax(),然后 setProgress()
因为否则进度将根据 max 的默认值计算,即 100。

无论您是否将最大值设置为不同的值之后: 进度值已设置。
因此,意外值(实际上是正确的)。

我设法找到了解决这个问题的办法。

显然我必须对我的数字进行标准化,以便它与 100 相关。

setMax() 应该是 100

setProgress() 应该像这样计算 - (oldProgress*100)/oldMax

*这个计算应该计算成浮点值(使用100.0f)然后你可以用Math.round.

四舍五入