【问题标题】:How do you tell a function to wait a few seconds in Kotlin?你如何告诉一个函数在 Kotlin 中等待几秒钟?
【发布时间】:2019-10-24 11:47:22
【问题描述】:

这里是 Android Studio 中的 Kotlin。

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

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

理想情况下,我会在:

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

非常感谢任何帮助!

动物园

【问题讨论】:

    标签: android kotlin imageview wait pause


    【解决方案1】:

    你可以使用Handler,

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

    【讨论】:

    • 我收到一个错误:无法访问 它在“处理程序”中受到保护/*保护和打包*/ 抱歉,我是菜鸟。 :L
    • 我认为你使用了错误的Handler类,确保顶部有import android.os.Handler,也许你使用java.util.logging.Handler
    【解决方案2】:

    因为这是特定于 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
    

    【讨论】:

    【解决方案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 的。 :-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-04
      • 2013-12-15
      • 1970-01-01
      • 2012-10-03
      • 1970-01-01
      • 1970-01-01
      • 2017-07-20
      相关资源
      最近更新 更多