如何更改非 sp 比例的字体大小?
How to change font size in non-sp scale?
我正在尝试为 TextView
的字体比例设置动画(例如从 14sp 到 22sp),但它仅按 1sp 缩放并且它会改变 ansty。不知道如何更正确地解释,而且看起来 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()
一样,但它仍然可以缩放 "stairly"
您还需要设置 textview
的 layoutparams
@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());
}
所以,多亏了Pawel,我想出了一个新主意,将字体大小设置为sizeEnd
,然后设置textView
的scaleX=scaleY=size/sizeEnd
,其中 size
是应该有 textView
的大小, sizeEnd
是应该在动画结束时的大小(目标大小)。
在我的例子中它有效,但它不是一个完美的解决方案。
我正在尝试为 TextView
的字体比例设置动画(例如从 14sp 到 22sp),但它仅按 1sp 缩放并且它会改变 ansty。不知道如何更正确地解释,而且看起来 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()
一样,但它仍然可以缩放 "stairly"
您还需要设置 textview
的 layoutparams
@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());
}
所以,多亏了Pawel,我想出了一个新主意,将字体大小设置为sizeEnd
,然后设置textView
的scaleX=scaleY=size/sizeEnd
,其中 size
是应该有 textView
的大小, sizeEnd
是应该在动画结束时的大小(目标大小)。
在我的例子中它有效,但它不是一个完美的解决方案。