Как изменить размер шрифта в масштабе без sp? - PullRequest
0 голосов
/ 20 мая 2019

Я пытаюсь анимировать масштаб шрифта TextView (например, от 14sp до 22sp), но он масштабируется только на 1 sp, и это меняет анимацию. Не знаю, как объяснить более правильно, но также выглядит как TextView задержки при изменении размера, но это не так.

Я пытался использовать стандартный метод setTextSize(float size), а также setTextSize(int units, float size) в пикселях, но ничего не изменилось. Я тоже пробовал методы scaleX() и scaleY(), но их трудно уместить в определенный размер sp.

ValueAnimator sizeAnimation = ValueAnimator.ofFloat(size, sizeEnd);
sizeAnimation.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
    @Override
    public void onAnimationUpdate(ValueAnimator animation) {
        textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, (Float) animation.getAnimatedValue());
    }
});

Я ожидал плавного изменения масштаба, как если бы я использовал scaleX() и scaleY(), но он все еще масштабируется "по лестнице"

Ответы [ 2 ]

0 голосов
/ 20 мая 2019

Итак, благодаря Pawel , у меня появилась новая идея установить размер шрифта на sizeEnd, а затем установить scaleX = scaleY = size/sizeEnd из textView, где size - это размер, который должен иметь textView и sizeEnd - это размер, который должен быть в конце анимации (целевой размер). В моем случае это работает, но это не идеальное решение.

0 голосов
/ 20 мая 2019

вам нужно установить layoutparams вашего textview, а также

 @Override
public void onAnimationUpdate(ValueAnimator animation) {
    int val = (Integer) animation.getAnimatedValue();
    layoutParams.height = val;
    textView.setLayoutParams(layoutParams);
    textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, (Float) animation.getAnimatedValue());
 }
...