在 Kotlin 中如何告诉函数等待几秒钟?

How do you tell a function to wait a few seconds in Kotlin?

此处 Android Studio 中的 Kotlin。

我正在尝试让 imageView 淡入主视图,等待几秒钟,然后淡出。在我的一生中,我找不到任何关于暂停或等待的文档。快把我逼疯了。

如何让我的函数冷静下来等待 3 秒,然后继续执行函数的其余代码?

理想情况下,我会在:

imageView.startAnimation(animIn)
imageView.startAnimation(animOut)

非常感谢任何帮助!

动物园

你可以使用Handler,

Handler().postDelayed(Runnable { 
    //anything you want to start after 3s
}, 3000)

导入 android.os.Handler 并尝试以下操作:

Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            public void run() {
                // yourAnimationMethod();
            }
        }, 1000); // 1000 milliseconds

如果您正在寻找 one-liner,您可以尝试:

(new Handler()).postDelayed(this::yourAnimationMethod, 1000); // 1000 milliseconds

您可以使用:

Timer("SettingUp", false).schedule(timeyouwant_in_milleseconds) { 
   imageView.startAnimation(animOut)
}

停止主线程几秒钟不是一个好主意。 您可以改用处理程序。 下面的代码将创建一个任务,该任务将在延迟后执行。 运行() 方法中的任何内容都将在延迟后执行。

new Handler().postDelayed(new Runnable()
{
   @Override
   public void run()
   {
     imageView.startAnimation(animOut)
   }
}, 3000);

因为这是 Kotlin 特有的,而不仅仅是 Android。为什么不使用 coroutines?

GlobalScope.launch {
    imageView.startAnimation(animIn)
    delay(3_000L)
    imageView.startAnimation(animOut)
}

这是一个天真的示例,在 GlobalScope 上启动,设置 up/getting 协程的一些开销可能意味着它不适合您的用例。但是,如果您已经在您的应用程序中使用协程,或者希望在未来使用协程,那么这段代码的意图非常明确。