有什么方法可以制作一个进度条,当值为 0 时,它是 100%?

Eva*_* R. 2 reverse android progress-bar

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

ProgressBar.setMax(0);

Integer startingdebt = -1000;  // 1000$ owed
ProgressBar.setProgress(currentlyowed);  //say, -500
Run Code Online (Sandbox Code Playgroud)

所以你从-1000开始,如果你付了钱,再加500美元。我不知道这是否可行,因为我确定进度条控件的最小值已经设置为 0,所以您不能将最大值设置为相同......有没有办法做到这一点?

编辑: 感谢大家的回答,但我找到了一种更简单的方法:与他人分享,这是我的最终代码块:

    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);
Run Code Online (Sandbox Code Playgroud)

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

double progresspaid = new Double(startingamount-currentamount);
double progresspercentage = new Double((progresspaid / startingamount)*100);
Run Code Online (Sandbox Code Playgroud)

再次感谢,我真的很感谢人们帮助我学习 Java 和 android 开发,我是一名 VB.net 开发人员,所以其中一些对我来说仍然陌生。

小智 7

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

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

percent = (current - min) / (max - min)
Run Code Online (Sandbox Code Playgroud)

(当 min = 0 时,这是微不足道的percent = current / max。)

从 100 到 0 的百分比是:

percentReverse = 100 - percent
Run Code Online (Sandbox Code Playgroud)

或者,扩展:

percentReverse = 100 - ((current - min) / (max - min))
Run Code Online (Sandbox Code Playgroud)

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

percent = (-800 - -1000) / (0 - -1000) = 200/1000 = 20 (% done)
percentReverse = 100 - 20 = 80 (% left)
Run Code Online (Sandbox Code Playgroud)

另一个例子,电流 = 0,最大值 = 2000,最小值 = -1000:

percent = (0 - -1000) / (2000 - -1000) = 1000/3000 = 33 (% done)
percentReverse = 100 - 33 = 66 (% left)
Run Code Online (Sandbox Code Playgroud)

快乐编码。