Android-平滑地增加文本视图中的文本大小

时间:2017-11-21 05:45:31

标签: android android-fragments textview

我想在文本视图中增加/减少文本大小,而不是.setTextSize()方法。就像当我点击一个按钮时,尺寸必须平滑而不是突然地从一个变为另一个。过渡必须随着增加而可见,以便获得良好的UI经验。我尝试使用一个循环,其中大小通过小小的位改变,但也可以快速可见。所以请有人建议我这样做的方法。我只是Android的初学者

2 个答案:

答案 0 :(得分:1)

这可以通过ValueAnimator来实现。

试试这个:

final TextView tv = new TextView(getApplicationContext());
Button btnPlay = (Button) findViewById(R.id.btnPlay);
btnPlay.setOnClickListener(MainActivity.this);


final float startSize = 42; // Size in pixels
final float endSize = 12;
final int 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);
    }
});

@Override
public void onClick(View view)
{
   if(view == btnPlay)
   {
         animator.start();
   }
}

在按钮的单击列表器中使用此代码,您可以在此处实现此目的。

答案 1 :(得分:0)

您可以使用View Animation.执行此操作 您应该从here

中引用它

在tour textanim.xml文件夹中创建一个res/anim。 (如果没有创建,首先在res文件中添加anim文件夹。)

你的textanim.xml应该是这样的。

<set android:shareInterpolator="false">
    <scale
        android:interpolator="@android:anim/accelerate_decelerate_interpolator"
        android:fromXScale="1.0"
        android:toXScale="1.4"
        android:fromYScale="1.0"
        android:toYScale="0.6"
        android:pivotX="50%"
        android:pivotY="50%"
        android:fillAfter="false"
        android:duration="700" />
    <set android:interpolator="@android:anim/decelerate_interpolator">
        <scale
           android:fromXScale="1.4"
           android:toXScale="0.0"
           android:fromYScale="0.6"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400"
           android:fillBefore="false" />
        <rotate
           android:fromDegrees="0"
           android:toDegrees="-45"
           android:toYScale="0.0"
           android:pivotX="50%"
           android:pivotY="50%"
           android:startOffset="700"
           android:duration="400" />
    </set>
</set>

转到相关的java文件(在Activity中),你必须像这样使用这个动画,

TextView mT = (TextView) findViewById(R.id.yourTextViewId);
Animation myAnim = AnimationUtils.loadAnimation(this, R.anim.textanim);
mText.startAnimation(myAnim);