Java android中的计时器
我正在尝试制作一个简单的倒计时计时器,在祝酒词中显示剩余的时间。Java android中的计时器,java,android,xml,Java,Android,Xml,我正在尝试制作一个简单的倒计时计时器,在祝酒词中显示剩余的时间。 我写了这段代码: new CountDownTimer(10000, 1000) { public void onTick(long timeRemaining) { Toast.makeText(getBaseContext(), "" + timeRemaining / 1000, Toast
我写了这段代码:
new CountDownTimer(10000, 1000) {
public void onTick(long timeRemaining) {
Toast.makeText(getBaseContext(), "" + timeRemaining / 1000,
Toast.LENGTH_SHORT).show();
}
public void onFinish() {
// do something
}
}.start();
问题是onFinish方法中的操作是在toast中显示“3”时执行的。因此,祝酒会比计时器慢。
我怎么解决这个问题呢?吐司不应该这样使用Toast.LENGTH\U SHORT在消失之前将保持3秒,但计时器将每秒滴答一次,所以显然Toast很慢 如果您想向用户显示计时器,则必须使用文本视图,如果您想要自己的计时器,则可以使用
Log.d()代码>
更新:-经过一点搜索后,我发现您不能为自定义时间设置Toast。Toast只有两个值Toast.LENGTH_LONG和Toast.LENGTH_SHORT。看看这个问题。作为一种变通方法,如果你真的想让烤面包只放一秒钟,那么你可以这样做
final Toast toast = Toast.makeText(ctx, "This message will disappear in 1 second", Toast.LENGTH_SHORT);
toast.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
toast.cancel();
}
}, 1000);
如果Android操作系统队列快速连续出现,它们会举杯庆祝。因此,实际的滴答声和烤面包片消失之间有一个缓慢的延迟。这意味着对于许多滴答声来说,祝酒开始落后。一个简单的解决办法是减少敬酒的次数 onFinish->toast.cancel()
我建议您使用textview来显示剩余时间,而不是toast。我需要使用toast。如果您试图向用户显示倒计时,则toast会产生令人不快的用户体验。例如,您可以使用对话框或DialogFragment来代替它。@GiovanniMariotti看到了我更新的答案。您不能设置toast的持续时间,使其与计时器同步?您可以使用1000来代替toast。LENGTH\u Shorth计时器在最短时间内总是更快toast@GiovanniMariotti给你一些参考资料,请投票选出对你有帮助的答案。
final Toast showToast = Toast.makeText(this, "test ya!!! i'm Strtoint", Toast.LENGTH_LONG);
// Set the countdown
CountDownTimer toastCountDown = new CountDownTimer(10000, 1000) //if set 1sec ->1000 ms
{
public void onTick(long timeRemaining) {
showToast.show();
}
public void onFinish() {
showtoast.cancel();
}
};
// Show the toast and starts the countdown
showToast.show();
toastCountDown.start();
}