带 ProgressBar 的 CountDownTimer,重启应用时继续进度条

     2023-02-22     174

关键词:

【中文标题】带 ProgressBar 的 CountDownTimer,重启应用时继续进度条【英文标题】:CountDownTimer with ProgressBar, continuing progressbar when restarting the app 【发布时间】:2022-01-09 22:32:13 【问题描述】:

我有一个显示 CountdownTimer 进度的 ProgressBar。 ProgressBar 工作除了当我关闭应用程序并重新启动它。如果我这样做,ProgressBar 从零开始。它不会从我离开的地方继续。

我有一个变量来保持以毫秒为单位的倒计时。我设法通过在 OnStop 和 OnStart 方法中使用 SharedPreferences 来正确维护它。但是如何正确使用这个变量来维护 ProgressBar 的进度呢?

private fun startCountdown() 

    var i = 1

    object : CountDownTimer(timeLeftInMilliseconds, 1000) 

        override fun onTick(millisUntilFinished: Long) 

            timeLeftInMilliseconds = millisUntilFinished
            
            i++

            myProgressBar.progress = (i * 100 / (40000 / 1000)).toInt()
            //Instead of 40000 here, I have tried to use the variable 
            //timeLeftInMilliSeconds or millisUntilFinished, but that doesn't work. 
        

        override fun onFinish() 
            progressBarOutOfLikesTimer.progress = 100;
            timeLeftInMilliseconds = 40000
        

【问题讨论】:

显示更多代码,例如您提到的 onStart 和 onStop 函数。我的猜测是你的 onStop 方法没有被调用。 【参考方案1】:

我认为这个i 变量增加了不必要的复杂性。您可以根据剩余时间除以总时间直接计算要填充的条形的分数。我在这里使用toDouble() 来确保我们没有进行整数数学运算并得到不必要的截断。我假设 ProgressBar 的 max 是 100。您应该将时间分数乘以 max 的任何值。

private fun startCountdown() 

    object : CountDownTimer(timeLeftInMilliseconds, 1000) 

        override fun onTick(millisUntilFinished: Long) 
            timeLeftInMilliseconds = millisUntilFinished
            myProgressBar.progress = (100 * (1.0 - millisUntilFinished.toDouble() / 40000)).toInt()
        

        override fun onFinish() 
            progressBarOutOfLikesTimer.progress = 100;
            timeLeftInMilliseconds = 40000
        

【讨论】:

所以它现在原则上可以工作,但是我该如何反转它以便 ProgressBar 慢慢填充?在您的示例中,它以完整的 ProgressBar 开始,然后逆时针缓慢“清空”自身。我希望它顺时针填充。 哦,对了。只需从 1 中减去分数即可将其反转。我在上面更新了它。 不是这样,现在根本不显示任何进度。 您确定完全复制了吗?我用这段代码做了一个示例项目,它工作正常。 我的错。你说得对。我在错误的地方有一个括号.. geez.

extxtype

基本组件:xtypeClass描述buttonExt.Button按钮splitbuttonExt.SplitButton带下拉菜单的按钮cycleExt.CycleButton带下拉选项菜单的按钮buttongroupExt.ButtonGroup编组按钮(Since3.0)sliderExt.Slider滑动条progressExt.ProgressBar进度条statusbarExt.Sta 查看详情

活动倒计时的做法(代码片段)

...前时间、截止时间。第二步贴代码<template><divclass="countdown"><divclass="countdown-time"><spanclass="countdown-word">countdownDateNow.days|splitTime(0)</span><spanclass="countdown-word">countdownDateNow.days|splitTime(1)</span></div><... 查看详情

关于progressbar的美化问题

Android自带的ProgressBar事实上也算不上丑陋,可是假设全部的App都使用一个模式的ProgressBar,那么预计用户就要崩溃了,打开不论什么一个App。擦,进度条都一模一样。。有鉴于此。我们今天就来谈谈ProgressBar的美化问题。学会了Pr... 查看详情

c#中的progressbar控件如何使用?

我在窗体里添加了progressBar又添加了一个时间触发器,时间触发器的Tick事件如下:privatevoidtimer1_Tick(objectsender,EventArgse)if(progressBar1.Value<100)this.progressBar1.Value++;elsethis.timer1.Enabled=false;可那个进度就是不变,哪位大虾帮忙解决下!... 查看详情

带圆角的 QT/QML 材质进度条

】带圆角的QT/QML材质进度条【英文标题】:QT/QMLMaterialProgressBarwithroundedcorners【发布时间】:2019-05-2810:46:22【问题描述】:我想拥有Material风格的ProgressBar组件,但要进行一些修改以使其高度可调。到目前为止一切顺利,我得到了... 查看详情

在progressbar控件中显示进度百分比

实现效果:  知识运用:  ProgressBar控件的Value属性    //控件的当前值  Maximum属性      //ProgressBar正在使用的范围的上限  PerformStep方法  //按照Step属性的数量增加任务栏的当前位置  publicvoidPerformStep()... 查看详情

实训之countdown深度优化

  今天开始我们为期三周的实训,讲道理很紧张。我们两个多月的时间,小组成员磨合的非常好,可以说是有点默契的程度了,凝聚力明显提高。今天的分组之后立马投入这次实训中。   首先要确定我们这次实... 查看详情

progressbar怎么显示复制进度

参考技术A复制过程和Progressbar的显示过程是在两个线程中的。复制过程是分片复制的,例如文件总大小是100M,那么每次复制1M。每次复制完成,把当前复制完成的百分比发消息到Progressbar的线程,Progressbar把这个百分比显示出来... 查看详情

countdown(计时器)

N(Need,需求) 我们了解到一些记忆力不好或者是没有固定目标激励的用户的痛苦,他们需要有一个人在他们忙的不可开交焦头烂额的时候提醒他们接下来要做的事,或者是一些有重大考试的用户提醒,给他们一些压力和固... 查看详情

countdown(倒计时)需求规格分析说明书

一、引言目的:我们的产品countdown是为了解决一些记忆力不好或者是没有固定目标激励的人的痛苦,他们需要有一个人在他们忙的不可开交焦头烂额的时候提醒他们接下来要做的事,或者是一些有重大考试的用户提醒,给他们一... 查看详情

c#progressbar控件

我在c#的窗体中链接网页,用ProgressBar控件显示进度,当链接到时,ProgressBar控件填满。要怎样写?我是个新手,请附上详细代码?你拖放一个webbrower后,然后再他的ProgressChanged事件中写如下代码哈;privatevoidwebBrowser1_ProgressChanged(obje... 查看详情

C++ 中带有 Gtkmm 的 ProgressBar

】C++中带有Gtkmm的ProgressBar【英文标题】:ProgressBarwithGtkmminc++【发布时间】:2017-08-0909:53:58【问题描述】:您好,我知道如何使用Gtkmm创建进度条。我还知道一个按钮,例如,当我单击按钮时,progressBar如何增加10%。但我不知道如... 查看详情

ProgressBar 没有出现在位于 Fragment 的 WebView 中,如何在 WebView android 中显示 ProgressBar?

】ProgressBar没有出现在位于Fragment的WebView中,如何在WebViewandroid中显示ProgressBar?【英文标题】:ProgressBardoesnotappearinWebViewlocatedinFragment,howtoshowProgressBarinWebViewandroid?【发布时间】:2020-02-2517:36:59【问题描述】:每当我输入片段时... 查看详情

progressbar基本介绍

简介ProgressBar继承自View,用于在界面上显示一个进度指示的界面。1、ProgressBar有两个进度,一个是android:progress,另一个是android:secondaryProgress。后者主要是为缓存需要所涉及的,比如在看网络视频时候都会有一个缓存的进度条以... 查看详情

progressBar 的可拉伸图像源

】progressBar的可拉伸图像源【英文标题】:stretchableimagesourceforprogressBar【发布时间】:2015-05-1820:05:53【问题描述】:我在activity_main.xml文件中创建了如下进度条:<ProgressBarandroid:id="@+id/progressBar1"style="?android:attr/progressBarStyleHorizon... 查看详情

React-countdown-now 不更新渲染

】React-countdown-now不更新渲染【英文标题】:React-countdown-nownotupdatingonrender【发布时间】:2019-01-0810:28:45【问题描述】:我正在使用React和Flux创建一个MissionClock网络应用。代码可以在这里找到:https://github.com/jcadam14/Flux-Mission-Clock... 查看详情

vue-countdown组件(代码片段)

vue-countdown组件Maindist/├──vue-countdown.js(UMD)├──vue-countdown.min.js(UMD,compressed)├──vue-countdown.common.js(CommonJS,default)└──vue-countdown.esm.js(ESModule)Installnpminstall@chenfengyuan/vue-countdownvueInbrowser<scriptsrc="/path/to/vue.js"></script>&l... 查看详情

如何显示progressbar的进度条,给分100

参考技术A还可以这样的:先设置max,min,step!然后用这个语:progressbar1.position:=progressbar1.position+n;其中的N为进度条的进度值前进量,在程序中要先设置或自动计算细分每次前进的量,保证运行正确! 查看详情