1
votes

Comment dire à une fonction d'attendre quelques secondes dans Kotlin?

Kotlin dans Android Studio ici.

J'essaie de faire disparaître une imageView dans la vue principale, attendez quelques secondes, puis disparaît. Pour la vie de moi, je ne trouve aucune documentation sur la pause ou l'attente nulle part. Cela me rend fou.

Comment puis-je dire à ma fonction de simplement se détendre et d'attendre 3 secondes, puis de continuer à exécuter le reste du code de la fonction?

Idéalement, j'aurais entre:

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

Toute aide est très appréciée!

Zoo


0 commentaires

5 Réponses :


3
votes

Vous pouvez utiliser Handler,

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


2 commentaires

J'obtiens une erreur: Impossible d'accéder à , il est protégé / * protégé et le package * / dans 'Handler' Désolé, je suis un noob. : L


Je pense que vous utilisez une mauvaise classe Handler, assurez-vous qu'il y a import android.os.Handler en haut, peut-être que vous utilisez java.util.logging.Handler



0
votes

importez le android.os.Handler et essayez ce qui suit:

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

Si vous recherchez un one-liner, vous pouvez essayer: p >

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


1 commentaires

Si vous utilisez Kotlin, vous devrez peut-être convertir Java en Kotlin pour que cela fonctionne. Veuillez vous référer à androidride.com/convert-java-class-to- kotlin-android-studio



0
votes

vous pouvez utiliser:

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


0 commentaires

0
votes

Arrêter le thread principal pendant quelques secondes n'est pas une bonne idée. Vous pouvez utiliser un gestionnaire à la place. Le code ci-dessous créera une tâche qui sera exécutée après un délai. Tout ce qui est placé dans la méthode run () sera exécuté après un certain délai.

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


1 commentaires

C'est en Java. Cette question fait spécifiquement référence à Kotlin. :-)



3
votes

Comme c'est spécifique à Kotlin et pas seulement à Android. Pourquoi ne pas utiliser coroutines?

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

Ceci est un exemple naïf, le lancement sur GlobalScope, et une partie des frais généraux liés à la configuration / à la maîtrise des coroutines peut signifier que cela ne convient pas à votre cas d'utilisation. Mais si vous utilisez déjà des coroutines dans votre application, ou si vous prévoyez de le faire dans le futur, ce code est assez clair dans son intention.


1 commentaires

Je suis sûr que cela pourrait atteindre mon objectif, mais je ne sais pratiquement rien sur les coroutines