android - 有什么方法可以使进度条在值为 0 时为 100%?

标签 android progress-bar reverse

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

ProgressBar.setMax(0);

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

所以你从 -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);

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

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)

另一个例子,current = 0, max = 2000, min = -1000:

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

快乐编码。

关于android - 有什么方法可以使进度条在值为 0 时为 100%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7616016/

相关文章:

algorithm - 反转 CRC32

android - 如何在 retrofit2 android 中解析来自多部分表单数据请求的响应

android - 在通知工作之前是否需要将 APK 上传到 Google Play?

java - StringBuffer buffer = new StringBuffer() 行中无法访问的语句

android - Android 中显示值的进度条

javascript - 手动反转数组

algorithm - 反转双向链表的子列表

android - 在 xml 中并排显示 DatePicker 和 TimePicker

ios - 如何在处理多个任务时跟踪进度和进度 View 的增量计数?

android - 当 mediaPlayer 准备播放时如何显示进度条