2016-04-17 21 views
0

Ich versuche, ein aus Linien bestehendes Diagramm anzuzeigen, und ich möchte es Linien für Linien anzeigen, die eine Pause machen. Also muss ich meine eigene onDraw-Methode in einem bestimmten Intervall aufrufen, aber ich weiß nicht, wie ich das machen soll.Wie man Handler verwendet, um zu warten?

Ich versuche dies in einer while-Schleife, die die Werte von "Start" und "Ende" ändern, die die Koordinaten der Linie sind.

final Handler h1 = new Handler(); 
    h1.postDelayed(new Runnable() {public void run() { 
     lineView.addLineToList(new Line(start, end)); 
     h1.postDelayed(this, 1000); 
     lineView.invalidate(); 
     } 

    }, 1000); 

Alle Linien werden jedoch gleichzeitig angezeigt.

Vielen Dank.

Antwort

0

Handler postdelay verschiebt Ihren Befehl einfach auf einen anderen Zeitpunkt (hier 1000ms) und es hat keinen Zyklus, um es wieder zu tun. Wenn Sie eine Funktion aufrufen, in einer Zeit, Zeit, verwenden Sie nur „Timer“ wie unten:

long delay = 500; 
long period = 1000; 

Timer timer = new Timer(); 
timer.schedule(yourFunction, delay, period); 
+0

Dank für Ihre Antwort, aber ich verstehe nicht, was meinst du mit yourfunction, weil ich in doc sehen, dass Timer .schedule dauert eine timerTask – cryckx

+0

Ich habe Ihre Lösung versucht, aber ich habe diesen Fehler: 04-18 13: 57: 28.280 2398-2568 /? E/AndroidRuntime: android.view.ViewRootImpl $ CalledFromWrongThreadException: Nur der ursprüngliche Thread, der eine Ansichtshierarchie erstellt hat, kann seine Ansichten berühren. – cryckx