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
5 Réponses :
Vous pouvez utiliser Handler,
Handler().postDelayed(Runnable { //anything you want to start after 3s }, 3000)
J'obtiens une erreur: Impossible d'accéder à
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
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
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
vous pouvez utiliser:
Timer("SettingUp", false).schedule(timeyouwant_in_milleseconds) { imageView.startAnimation(animOut) }
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);
C'est en Java. Cette question fait spécifiquement référence à Kotlin. :-)
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.
Je suis sûr que cela pourrait atteindre mon objectif, mais je ne sais pratiquement rien sur les coroutines