2010-11-22 4 views
0

Ich habe eine App, die Gesichter zerteilt - etwas, was die App in einer Nanosekunde machen kann, aber ich möchte, dass der Benutzer denkt, dass es etwas länger dauert. So in einem Fall auf eine Schaltfläche klicken, ist hier, was ich habe:Wie mache ich eine Aktion nach einer kurzen 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 

}

Der Dialog zeigt in Ordnung und die Gesichter zuschneiden zu fein. Das Problem ist - wenn der Benutzer die App ausführt, werden beide gleichzeitig auf dem Bildschirm angezeigt.

Gibt es eine Möglichkeit, es so zu machen, dass der Dialog erscheint, 3 Sekunden auf dem Bildschirm verstreichen, und dann die cropFaces ausgeführt wird? Auf diese Weise sieht es so aus, als ob es die Gesichter in ein paar Sekunden abgeschnitten hätte und dann erscheint die neue Seite. Vielen Dank!

+0

sollte grundsätzlich funktionieren. Versuchen Sie, den Handler außerhalb des onClick zu platzieren. Setzen Sie den Handler als ein Feld der Aktivität. Ich bin mir nicht sicher, aber vielleicht führt der Handler den Post-Delay zu früh aus, weil er nach der Onclick-Methode bereinigt wurde? (einfach raten) –

Antwort

2

Setzen Sie Ihren Anruf auf cropFaces() innerhalb Ihrer run() Methode, so dass es auch verzögert wird.

Verwandte Themen