我正在尝试制作一个简单的倒数计时器,以便在祝酒词中显示剩余时间 我写了这段代码:
new CountDownTimer(10000, 1000) {
public void onTick(long timeRemaining) {
Toast.makeText(getBaseContext(), "" + timeRemaining / 1000,
Toast.LENGTH_SHORT).show();
}
public void onFinish() {
// do something
}
}.start();
问题是onTinish方法中的动作在吐司时执行,我显示“3”。
所以,吐司比较慢,尊重计时器
我该如何解决?
答案 0 :(得分:2)
Toast 。 Toast.LENGTH_SHORT 会在消失之前保持3秒钟,但计时器会每秒打勾,所以Toast很慢。
如果您想向用户显示计时器,那么您必须使用 TextView ,如果您想要自己的计时器,那么您可以使用Log.d();
更新: - 经过一点搜索后,我发现你无法为自定义时间设置Toast。 Toast只有两个值Toast.LENGTH_LONG和Toast.LENGTH_SHORT。在此处Can an Android Toast be longer than Toast.LENGTH_LONG?查看此问题。作为一种解决方法,如果你真的想要将吐司设置为1秒钟,那么你可以这样做
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);
答案 1 :(得分:0)
如果Toast快速连续出现,它们会将Toast排队。所以会发生的事实是,实际的嘀嗒声和吐司之间的延迟会逐渐消失。这意味着对于许多蜱虫来说,祝酒词开始落后。一个简单的解决方法是减少Toasts的数量。
答案 2 :(得分:0)
onFinish-> toast.cancel()
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();
}