So erstellen Sie eine count-up-Effekt für ein textView in Android
Arbeite ich an einer app, die zählt die Anzahl der Fragezeichen in ein paar Absätze von text.
Nachdem der scan fertig ist (das dauert keine Zeit an allen) ich würde gerne das insgesamt präsentiert nach der Zahl geht von 0 bis INSGESAMT. So, 10: 0,1,2,3,4,5,6,7,8,9 10 und dann STOPPEN.
Ich habe versucht ein paar verschiedene Techniken:
TextView sentScore = (TextView) findViewById(R.id.sentScore);
long freezeTime = SystemClock.uptimeMillis();
for (int i = 0; i < sent; i++) {
if ((SystemClock.uptimeMillis() - freezeTime) > 500) {
sentScore.setText(sent.toString());
}
}
Außerdem habe ich versucht, dieses:
for (int i = 0; i < sent; i++) {
//try {
Thread.sleep(500);
} catch (InterruptedException ie) {
sentScore.setText(i.toString());
}
}
Ich bin sicher, diese sind beide vollständig amateur versucht. Jede Hilfe wäre sehr geschätzt.
Dank,
Richard
Wenn Sie die Schlaf-Methode auf dem UI-thread, damit der Haupt-thread der app, dann nicht. Es blockiert die Schnittstelle und die Benutzer werden nicht in der Lage, etwas zu tun in dieser Zeit.
Das ist genau das, was passiert ist. Jede/N Idee / N an, wie kann ich erreichen den Effekt, den ich Suche?
Es ist sehr spät hier und ich bin so müde, ich kann nicht, wir verfolgen genau, was Sie wollen zu tun, sondern um zu vermeiden, die Oberfläche vor dem einfrieren, müssen Sie die sleep-Methode in einem separaten thread. Entweder erstellen Sie es, und legen Sie Schlaf-Methode gibt, oder ich bin mir nicht sicher, wie ich es vor langer Zeit, es ist irgendeine Art von timer entweder von Java oder von der Android-Plattform, die automatisch erstellt einen eigenen thread und können Sie fügen Sie eine callback-Funktion, so dass es ausgeführt wird, der alle 500 Millisekunden. Einfach die google-java-Timer-oder android-Timer oder einfach nur warten, bis jemand hier, Ihnen zu sagen 😛 haha. Ich hab 2 müde jetzt 🙂
versuchen Sie, diese github.com/uguratar/countingtextview
Das ist genau das, was passiert ist. Jede/N Idee / N an, wie kann ich erreichen den Effekt, den ich Suche?
Es ist sehr spät hier und ich bin so müde, ich kann nicht, wir verfolgen genau, was Sie wollen zu tun, sondern um zu vermeiden, die Oberfläche vor dem einfrieren, müssen Sie die sleep-Methode in einem separaten thread. Entweder erstellen Sie es, und legen Sie Schlaf-Methode gibt, oder ich bin mir nicht sicher, wie ich es vor langer Zeit, es ist irgendeine Art von timer entweder von Java oder von der Android-Plattform, die automatisch erstellt einen eigenen thread und können Sie fügen Sie eine callback-Funktion, so dass es ausgeführt wird, der alle 500 Millisekunden. Einfach die google-java-Timer-oder android-Timer oder einfach nur warten, bis jemand hier, Ihnen zu sagen 😛 haha. Ich hab 2 müde jetzt 🙂
versuchen Sie, diese github.com/uguratar/countingtextview
InformationsquelleAutor Richard Burton | 2012-03-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
will ich zum initiieren der thread nach? Oder innerhalb? Ich kann nicht scheinen, um es funktioniert, wenn ich starten das runnable thread in dieser Methode.Es sollte nicht sein ein problem beim starten des Threads aus, die callback-Methode, wenn man die Gesamtzahl starten Sie dann den thread.(
onActivityResult
ist eine callback-Methode, die aufgerufen wird, wenn Sie erwarten, dass etwas von einer Kind-Aktivität, die Ihre Schritte mit startActivityForResult()). Beachten Sie, dass dieTextView
solltefinal
so können Sie es von dieser anonymen Klasse.Ein wenig re-jigging und es funktioniert genau wie ich es wollte. Danke!!! cl.ly/0X0H0M1Y3Y3L1j3g1C2d
Ist es nicht besser, Animator, anstatt behandeln Sie es direkt? Ich habe auch gelesen, dass der Thread schlecht ist, verwenden Handler statt für Android.
Meine Antwort wurde veröffentlicht in 2012, die offensichtlich die aktuelle Animator-Klasse ist die bessere Wahl(suchen Sie nach marmor die Antwort). Ein Thread-und eine Handler sind nicht die gleiche Sache, so verstehe ich nicht, was Sie zu sagen beabsichtigte, diese mit.
InformationsquelleAutor Luksprog
Ich habe einen eher konventionellen Android-Stil animation:
Du kannst mit der
0
undcount
Werte, um die Zähler gehen von einer Zahl mit jeder Zahl, und spielen mit den1000
die Dauer der gesamten animation.Beachten Sie, dass dies unterstützt die Android-API-level 11 und höher, aber Sie können das genial nineoldandroids Projekt zu machen, abwärtskompatibel leicht.
Wenn die startValue ungleich 0 ist, funktioniert es nicht richtig. Sie müssen aktualisieren Sie die evaluate-Funktion return startValue + (endValue - startValue) * Fraktion. Andere als diese tolle Arbeit!
danke, hab ich aktualisiert, der code
wie es funktioniert auf Doppel? ich bekomme den Fehler java.lang.Classcastexception-Fehler: java.lang.Doppelt kann nicht gewirkt werden, um java.lang.Integer
Sie müssen die TypeEvaluator zu TypeEvaluator<Float> und kehren Sie ein Schwimmer von der evaluate-Methode
InformationsquelleAutor marmor
Verwenden TextSitcher
für die besten Effekte. Es wandelt den text leise.
Wann kommt die änderung von text verwenden Sie den folgenden Code.
TextSwitcher
Recht? Sollten Sie gebucht haben, eine vollständige Codefragment zeigt den Einsatz von it. Aber immer noch, die Punkte zu erwähnen, dass sweet sweet Klasse 🙂InformationsquelleAutor Pavandroid
Einen Arbeiter-thread zu tun, das warten und aktualisieren der UI-thread.
Könnten Sie einen AsyncTask, obwohl es vielleicht ein overkill für diese Aufgabe. Wenn Sie diese, In der doInBackground () - Schleife über die Anzahl der Zeiten schlafen und nach jedem Schlaf-Periode, aktualisieren Sie die Zählung in den UIthread.
Dort gehen Sie! Slukain nur gab Sie den funktionierenden code 😛
InformationsquelleAutor Shubhayu
Vielleicht versuchen Sie, die for-Schleife so etwas wie:
über einen separaten thread und schlafen ist besser, als slukian hat gerade gebucht.
InformationsquelleAutor Magicode