"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.
四舍五入
我的 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.
四舍五入