我想将 TextView 的高度从0更改为实际高度。我使用此代码:
ValueAnimator anim = ValueAnimator.ofInt(0, height)
.setDuration(1000);
anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
public void onAnimationUpdate(ValueAnimator animation) {
textView.getLayoutParams().height = (int)animation.getAnimatedValue();
textView.requestLayout();
}
});
anim.start();
但动画并不是那么顺利(不是很糟糕,但我觉得它可以更流畅)。
有什么方法可以制作出这种最流畅的动画?
答案 0 :(得分:0)
它不平滑的原因是因为你在每次更新调用中设置布局高度,并且请求布局也可以在一秒钟内多次完成cpu密集。我建议的更顺畅的方法是保持textview可见性不变,然后将其设置为在代码中可见。
然后,您可以使用动画集为过渡设置动画。此外,如果您不想自定义动画并且只希望它动画到位置,您可以通过将下面的xml属性指定为textview的父布局来使用默认动画
android:animateLayoutChanges= "true"
然后在您的代码中将Visibility设置为可见时,如下所示
textview.setVisibility(View.VISIBLE)
您的textview会自动动画显示它的位置。
答案 1 :(得分:0)
请尝试以下代码。我希望它会对你有所帮助。
textView.setScaleY(0);
textView.setScaleX(0);
textView.animate()
.scaleY(1)
.scaleX(1)
.setDuration(200)
.setInterpolator(INTERPOLATOR)
.start();
将INTERPOLATOR声明为类级变量,如下面的代码。
private static final Interpolator INTERPOLATOR = new DecelerateInterpolator();
这会给你一个非常流畅的动画。您可以使用这段代码并根据需要设置动画。您可以更改INTERPOLATOR。 详细了解INTERPOLATOR。