wake-up-neo.com

Animation der Textgröße eines TextView und nicht des gesamten TextView

Gibt es eine Möglichkeit, nur die Textgröße des TextView zu animieren, ohne das gesamte TextView-Layout zu skalieren?

enter image description here

Ich versuche, einen ähnlichen Effekt zu erzielen. Beachten Sie, dass der Text in eine einzelne Zeile umgewandelt wird, während die Größe kleiner wird.

14
cozeJ4

Dies könnte mit einer ValueAnimator erreicht werden, und ich glaube, es sollte von oben auf etwa so aussehen:

final TextView tv = new TextView(getApplicationContext());

final float startSize = 42; // Size in pixels
final float endSize = 12;
long animationDuration = 600; // Animation duration in ms

ValueAnimator animator = ValueAnimator.ofFloat(startSize, endSize);
animator.setDuration(animationDuration);

animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator valueAnimator) {
        float animatedValue = (float) valueAnimator.getAnimatedValue();
        tv.setTextSize(animatedValue);
    }
});

animator.start();
31
korrekorre

Nachfolgend die Antwort von @korrekorre: Die Dokumentation schlägt vor, die einfachere ObjectAnimator-API zu verwenden

final TextView tv = new TextView(getApplicationContext());

final float endSize = 12;
final int animationDuration = 600; // Animation duration in ms

ValueAnimator animator = ObjectAnimator.ofFloat(tv, "textSize", endSize);
animator.setDuration(animationDuration);

animator.start();    

Es gibt nur eine Einschränkung: Die Eigenschaft, die Sie an den Konstruktor übergeben (in diesem Fall "textSize") must verfügt über eine öffentliche Setter-Methode, damit dies funktioniert.

Sie können dem Konstruktor auch eine startSize übergeben, andernfalls verwendet der Interpolator die aktuelle Größe als Startpunkt

1

sie können mit diesen Bibliotheken versuchen:

Erste Bibliothek

Zweite Bibliothek

1
Aspicas