java - Android 中的 Toast 定时器

标签 java android xml

我正在尝试制作一个简单的倒计时器来显示 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();

问题是,当我在 toast 中显示“3”时,就会执行 onFinish 方法中的操作。
因此,尊重定时器, toast 速度较慢。
我该如何解决这个问题?

最佳答案

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? 。作为解决方法,如果您确实想将 Toast 设置为 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);

关于java - Android 中的 Toast 定时器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20936772/

相关文章:

java - 如何检测 Java System.out 是否是终端?

java - 在Java中四舍五入的双值

Java 8 使用过滤器选项在嵌套列表中执行求和运算

Android - 启动应用程序后启动相同的 Activity

android - 服务不总是重新启动,无法获取日志

python - 命令行 : Python program says "Killed"

java - 我究竟做错了什么??

android 应用程序是否可以检测它何时在模拟器与设备上运行

java - 无法使用JDOM获取子标签内的内容

xml - 用于模型交换的 Content MathML 与 OpenMath