你如何告诉一个函数在 Kotlin 中等待几秒钟?
Posted
技术标签:
【中文标题】你如何告诉一个函数在 Kotlin 中等待几秒钟?【英文标题】:How do you tell a function to wait a few seconds in Kotlin? 【发布时间】:2019-10-24 11:47:22 【问题描述】:这里是 android Studio 中的 Kotlin。
我正在尝试让 imageView 淡入主视图,等待几秒钟,然后淡出。在我的一生中,我找不到任何关于暂停或等待的文档。快把我逼疯了。
如何让我的函数冷静下来并等待 3 秒,然后继续执行函数的其余代码?
理想情况下,我会在:
imageView.startAnimation(animIn)
imageView.startAnimation(animOut)
非常感谢任何帮助!
动物园
【问题讨论】:
【参考方案1】:你可以使用Handler,
Handler().postDelayed(Runnable
//anything you want to start after 3s
, 3000)
【讨论】:
我收到一个错误:无法访问因为这是特定于 Kotlin 而不仅仅是 Android。为什么不使用coroutines?
GlobalScope.launch
imageView.startAnimation(animIn)
delay(3_000L)
imageView.startAnimation(animOut)
这是一个幼稚的示例,在 GlobalScope 上启动,设置/了解协程的一些开销可能意味着它不适合您的用例。但是如果你已经在你的应用中使用协程,或者期望在未来使用,那么这段代码的意图就很清楚了。
【讨论】:
我确信这可能会实现我的目标,但我对协程几乎一无所知【参考方案3】:导入 android.os.Handler 并尝试以下操作:
Handler handler = new Handler();
handler.postDelayed(new Runnable()
public void run()
// yourAnimationMethod();
, 1000); // 1000 milliseconds
如果您正在寻找单线,您可以尝试:
(new Handler()).postDelayed(this::yourAnimationMethod, 1000); // 1000 milliseconds
【讨论】:
如果您使用的是 Kotlin,您可能需要将 Java 转换为 Kotlin 才能使其正常工作。请参考androidride.com/convert-java-class-to-kotlin-android-studio【参考方案4】:你可以使用:
Timer("SettingUp", false).schedule(timeyouwant_in_milleseconds)
imageView.startAnimation(animOut)
【讨论】:
【参考方案5】:停止主线程几秒钟不是一个好主意。 您可以改用处理程序。 下面的代码将创建一个任务,该任务将在延迟后执行。 run() 方法中的任何内容都将在延迟后执行。
new Handler().postDelayed(new Runnable()
@Override
public void run()
imageView.startAnimation(animOut)
, 3000);
【讨论】:
这是在 Java 中。这个问题是专门针对 Kotlin 的。 :-)以上是关于你如何告诉一个函数在 Kotlin 中等待几秒钟?的主要内容,如果未能解决你的问题,请参考以下文章