如何以非sp比例更改字体大小?

时间:2019-05-19 22:22:40

标签: java android textview resize

我正在为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 :(得分:0)

您还需要设置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());
 }

答案 1 :(得分:0)

因此,多亏了Pawel,我想到了一个新的想法,将字体大小设置为sizeEnd,然后设置size/sizeEnd的scaleX = scaleY = textView,其中{ {1}}是应该具有size的大小,textView是应该在动画结尾处的大小(目标大小)。 就我而言,它是可行的,但这不是一个完美的解决方案。