2010-11-22 5 views
0

J'ai une application qui recadre les visages - quelque chose que l'application peut faire en une nanoseconde, mais je veux que l'utilisateur pense que cela prend un peu plus de temps. Ainsi, dans un cas sur un bouton clic, voici ce que j'ai:Comment préformer une action après une courte pause?

final ProgressDialog dialog = ProgressDialog.show(Main.this, "", 
         "Cropping faces...", true); 
       dialog.show(); 

      Handler handler = new Handler(); 
      handler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        dialog.dismiss(); 
       } 
      }, 3000); 
          cropFaces(); 
          return 

}

La boîte de dialogue montre fine et les visages aussi belle récolte. Le problème est - lorsque l'utilisateur exécute l'application, les deux se produisent simultanément sur l'écran.

Y a-t-il un moyen de faire en sorte que la boîte de dialogue apparaisse, 3 secondes s'écoulent à l'écran, puis les cropFaces s'exécutent? De cette façon, il semblera qu'il a recadré les visages en quelques secondes, puis la nouvelle page apparaît. Merci!

+0

devrait essentiellement fonctionner. essayez de mettre le gestionnaire en dehors de l'onClick. Mettez le Handler comme un champ de l'activité. Je ne suis pas sûr, mais peut-être que le gestionnaire exécute le postdelay trop tôt parce qu'il est nettoyé après que la méthode onclick a été traitée? (juste deviner) –

Répondre

2

Mettez votre appel à cropFaces() à l'intérieur de votre méthode run(), donc il est également retardé.

Questions connexes