Android TextView-Zähler mit Top / Down-Animation

7

Wir haben eine TextView, die ich gerne runterzählen würde (9 ... 3 ... 2 ... 1 ... 0 oder 0 ... 1 ... 3..6..9 Zeug passiert).

So (wie jeder Art-Meter funktioniert):

Um es etwas interessanter zu machen, möchte ich, dass jede Ziffer von oben nach unten oder von unten nach oben kommt?

Momentan benutze ich listview um das zu erreichen, ich habe es auch mit TextSwitcher versucht, aber es gibt nur eine Begrenzung von zwei untergeordneten Elementen.

Ich verwende getListView().smoothScrollToPosition(0...3...6...6...n) ;

Gibt es eine einfache Möglichkeit, dies zu tun? Denn gerade jetzt müssen wir 3 ListView und Adapter beibehalten, um dies zu erhalten.

Bitte lesen Sie den Link, um diese Frage besser zu verstehen

Display Stoppuhr Timer animiert wie Benzin Pumpenzähler mit NSTimer

    
Lavekush Agrawal 29.01.2016, 13:55
quelle

3 Antworten

29

ListView s ist vielleicht eine gute Lösung, aber ich habe sie mit einer benutzerdefinierten Ansicht ( FrameLayout ) implementiert, die in 2 TextView s enthält, die basierend auf den Wertänderungen animiert werden:

Die Idee von Code ist sehr einfach:

  • Sie übergeben an setValue gewünschter Wert;
  • Wenn es größer als der aktuelle ist - starte die Animation von unten nach oben (und umgekehrt), um den aktuellen Wert um 1 zu erhöhen / verringern. Hier animieren wir zwei TextView s, um einander zu ersetzen;
  • Überprüfen Sie im AnimationEnd-Listener, ob wir den gewünschten Wert erreicht haben - falls nicht - führen Sie einen weiteren (rekursiv) aus;

    %Vor%

Und es ist XML:

%Vor%

Und es ist sehr einfach zu bedienen:

Zum Layout hinzufügen:

%Vor%

Und Wert im Code festlegen:

%Vor%

Upd:
Eine weitere Option, die ich verwenden kann, ist ein benutzerdefiniertes NumberPicker

Ich hoffe, es hilft!

    
Konstantin Loginov 31.01.2016, 22:17
quelle
4

Seit Robinhood die Material Design Awards gewonnen hat, haben sie dort custom TextView eröffnet, so wie du es beschreibst.

Schau dir die Robinhood Ticker-Bibliothek

an

    
tim 27.11.2016 16:01
quelle
1

Sie können auch einen Handler verwenden, um den gewünschten Effekt zu erzielen. Dadurch müssen Sie keine benutzerdefinierten Ansichten erstellen. Erstellen Sie eine Funktion handleTextView , die initialValue , finalValue und targetTextview als Argumente akzeptiert. Die Methode ist -

%Vor%

UPDATE: Option 2- Sie können auch einen Wertanimator verwenden -

%Vor%

Mit dieser Methode brauchen wir keine Mathematik zu machen.

    
Vaibhav Sharma 06.02.2016 06:53
quelle

Tags und Links