我正在开发一个债务跟踪应用程序,并且需要一个进度条,随着当前债务的减少,进度会增加。我能想到的唯一方法是对数字进行模糊处理,以便将进度条MAX设置为0,然后将起始债务更改为负数,如下所示

ProgressBar.setMax(0);

Integer startingdebt = -1000;  // 1000$ owed
ProgressBar.setProgress(currentlyowed);  //say, -500


因此,您从-1000开始,如果付款,则加上500 $。我不知道这是否行得通,因为我确定progressbar控件的最小设置值已经为0,所以您不能将maxset设置为相同的值...有没有办法做到这一点?

编辑:谢谢你们的答案,但我找到了一种更简单的方法:
 与他人共享,这是我的最终代码块:

    double startingamount = (this.c.getDouble(this.c.getColumnIndex(DbAdapter.KEY_STARTINGAMOUNT)));
    double currentamount = (this.c.getDouble(this.c.getColumnIndex(DbAdapter.KEY_CURRENTAMOUNT)));
    currentdebt.setText(formatter.format(currentamount));
    double progresspaid = new Double(startingamount-currentamount);
    double progresspercentage = new Double((progresspaid / startingamount)*100);
    int progresspercent = (int)progresspercentage;
    progressbar.setText(Integer.toString(progresspercent)+"%");
    progressbar.setMax(100);
    progressbar.setProgress(progresspercent);


关键是要获得一个变量,该变量将从起始金额中减去当前金额,然后将其除以起始金额。

double progresspaid = new Double(startingamount-currentamount);
double progresspercentage = new Double((progresspaid / startingamount)*100);


再次感谢,我非常感谢有人帮助我学习Java和android开发,我是VB.net开发人员,所以其中有些对我来说还是陌生的。

最佳答案

尽管这可能不是理想的选择(我不使用Android并避免使用UI编码;-),但可以通过一些数学运算来计算数字和百分比-如果原始值本身显示在进度条上,则可能会出现问题。

从0 ... 100的百分比是:

percent = (current - min) / (max - min)


(当min = 0时,这通常是percent = current / max。)

从100到0的百分比是:

percentReverse = 100 - percent


或扩展:

percentReverse = 100 - ((current - min) / (max - min))


例如,电流= -800,最大值= 0,最小值= -1000:

percent = (-800 - -1000) / (0 - -1000) = 200/1000 = 20 (% done)
percentReverse = 100 - 20 = 80 (% left)


另一个示例,当前= 0,最大值= 2000,最小值= -1000:

percent = (0 - -1000) / (2000 - -1000) = 1000/3000 = 33 (% done)
percentReverse = 100 - 33 = 66 (% left)


快乐的编码。

08-04 23:53
查看更多