java - 带有进度条的 Android countDownTimer。无法设置进度
问题描述
我正在努力解决奇怪的问题,我已经用圆形进度条制作了倒数计时器。有时随着时间的流逝,进度条的剩余像素很少(x 和 t 之间的橙色),即使它达到了 onFinish 函数。这不再是问题,因为我将 countDownInterval 设置为 10,但随后 showProgress 函数不起作用,它进入 else 语句,但实际上并没有将进度条设置为 0。
private void startCountingTime() {
if (!counting) {
timeLeftInMillis = maxTime * 1000;
endTime = System.currentTimeMillis() + timeLeftInMillis;
}
if (maxTime != 0) {
countDownTimer = new CountDownTimer(timeLeftInMillis, 100) {
@Override
public void onTick(long l) {
String text = String.format(Locale.getDefault(), "%02d:%02d",
TimeUnit.MILLISECONDS.toMinutes(l) % 60,
TimeUnit.MILLISECONDS.toSeconds(l) % 60);
timeLeftInMillis = l;
showProgress(l, maxTime);
counting = true;
question.setText(exposePasswd ? text : currentQuestion);//displays the timer or question
}
@Override
public void onFinish() {
step = 4;
counting = false;
progressBar.setProgress(0);
question.setText("Out of time! doubletap for next question");
}
}.start();
} else {
question.setText("tap to reveal, doubletap for next");
exposePasswd = false;
}
}
private void showProgress(long l, int maxTime) {
maxTime = maxTime * 1000;
int prog = (int) ((l * 100) / maxTime);
if (exposePasswd) {
// progressBar.setVisibility(View.VISIBLE);
if (progressBar.getProgress() == 0) {
progressBar.setProgress(prog);
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
progressBar.setProgress(prog, true);
} else {
progressBar.setProgress(prog);
}
} else {
progressBar.setProgress(0);
Log.wtf("idk","setted");
}
}
任何想法如何解决它?
解决方案
我不确定为什么会发生这种情况,但是您可以通过添加以下内容轻松绕过此问题:
progressbar.setVisibility(Visibility.GONE);
在 else 语句中和
progressbar.setVisibility(Visibility.VISIBLE);
当计时器开始时。
推荐阅读
- vba - VBA - 添加到现有公式
- ios - Xcode 在签署应用程序时没有选择正确的证书
- r - R 中的 shell() 是否记得前面的命令?
- c# - 如何序列化具有 xml 元素作为属性的类,没有重复节点?
- html - Chrome 仍然错误地确定页面使用不同的语言并提供翻译
- c++ - 使用我自己的 dll 中的类时出现不完整的类型错误
- php - 不断收到“未捕获的错误:无法使用 mysqli_result 类型的对象作为数组”
- javascript - res.redirect 和 res.sendfile 有什么区别?
- azure - Kubernetes 虚拟节点池意外 VM 费用
- html - 使用 CSS 选择特定列表的标记(项目符号、编号等)