将LayouParams动画为wrap_content

时间:2017-08-16 18:17:42

标签: android android-animation

我可以通过像这样设置LayoutParams来设置视图的高度动画

void animateHeight(final View view, int newHeight) {
    int currentHeight = view.getMeasuredHeight();

    ValueAnimator animator = ValueAnimator.ofInt(currentHeight, newHeight);
    animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
        @Override
        public void onAnimationUpdate(ValueAnimator valueAnimator) {
            ViewGroup.LayoutParams layoutParams = view.getLayoutParams();
            layoutParams.height = (Integer) valueAnimator.getAnimatedValue();
            view.setLayoutParams(layoutParams);
        }
    });
    animator.start();
}

如果我希望最终高度为wrap_content,有没有办法做类似的事情?

1 个答案:

答案 0 :(得分:2)

为此,您需要模仿Android布局和度量视图的方式。这是一个复杂的过程,您可以看到解释in the Android documentation

如果可以更改布局,另一种方法是使用ConstraintLayoutConstraintSet。您可以在此Google official tutorial以及此training (also by Google, with source code)中找到有关它的更多信息。

因此,如果ConstraintLayout适合您,您可以看到this article如何利用ConstraintSet创建干净漂亮的动画。

希望这能让你走上正轨!