在 Android 中修改 GUI 的自准备计时器
Self Prepuating Timer That Modifies GUI in Android
我正在制作一个应用程序,我在应用程序的某个部分存储了价格列表以及价格持续的时间(它们的持续时间不尽相同)。因此,价格会持续一段时间,然后一旦该价格的时间到了,它就会更改为另一个价格(这部分会更改 UI 或基本上它会用新价格更新文本视图)。所以我需要的是一个计时器,它可以用新的时间长度再次设置计时器,一旦完成,就进行 UI 更改。例如,每一对代表价格金额和时间(以秒为单位):{ {$2.53,1.4s}, {$4.57,4.45s}, {$1.23,3.6s}...}
因此,当计时器启动时,textview 显示 $2.53,计时器持续 1.4 秒,然后它应该获取下一个价格 $4.57 并再次设置,但这次为 4.45 秒。这个过程一直持续到游戏结束。我正在考虑使用 CountDownTimer 并在调用 onFinish() 方法后自行重置(我还没有验证这个想法是否有效)。还有其他想法吗?
您可以使用倒数计时器和 onFinish 方法回调该函数并启动另一个计时器:
private void startWheatPrices(long gameTime)
{
//other stuff executed
StartWheatTimer(GameTimeDifference);//starts the timer for the first time
}
private void StartWheatTimer(long TimerAmount)
{
WheatTimer = new CountDownTimer(TimerAmount, 10) {
public void onTick(long millisUntilFinished)
{
}
public void onFinish()
{
//other stuff executed
WheatPricesTV.setText(Float.toString(PriceList.get(0).get(WheatPriceIndex).price));//price is changed
if(InGameplayMode)
StartWheatTimer(convertToMilliseconds(PriceList.get(0).get(WheatPriceIndex).timeLength));//call back the function to start the timer again
}
}.start();
}
我正在制作一个应用程序,我在应用程序的某个部分存储了价格列表以及价格持续的时间(它们的持续时间不尽相同)。因此,价格会持续一段时间,然后一旦该价格的时间到了,它就会更改为另一个价格(这部分会更改 UI 或基本上它会用新价格更新文本视图)。所以我需要的是一个计时器,它可以用新的时间长度再次设置计时器,一旦完成,就进行 UI 更改。例如,每一对代表价格金额和时间(以秒为单位):{ {$2.53,1.4s}, {$4.57,4.45s}, {$1.23,3.6s}...}
因此,当计时器启动时,textview 显示 $2.53,计时器持续 1.4 秒,然后它应该获取下一个价格 $4.57 并再次设置,但这次为 4.45 秒。这个过程一直持续到游戏结束。我正在考虑使用 CountDownTimer 并在调用 onFinish() 方法后自行重置(我还没有验证这个想法是否有效)。还有其他想法吗?
您可以使用倒数计时器和 onFinish 方法回调该函数并启动另一个计时器:
private void startWheatPrices(long gameTime)
{
//other stuff executed
StartWheatTimer(GameTimeDifference);//starts the timer for the first time
}
private void StartWheatTimer(long TimerAmount) { WheatTimer = new CountDownTimer(TimerAmount, 10) {
public void onTick(long millisUntilFinished)
{
}
public void onFinish()
{
//other stuff executed
WheatPricesTV.setText(Float.toString(PriceList.get(0).get(WheatPriceIndex).price));//price is changed
if(InGameplayMode)
StartWheatTimer(convertToMilliseconds(PriceList.get(0).get(WheatPriceIndex).timeLength));//call back the function to start the timer again
}
}.start();
}