我可以通过像这样设置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,有没有办法做类似的事情?
答案 0 :(得分:2)
为此,您需要模仿Android布局和度量视图的方式。这是一个复杂的过程,您可以看到解释in the Android documentation。
如果可以更改布局,另一种方法是使用ConstraintLayout
和ConstraintSet
。您可以在此Google official tutorial以及此training (also by Google, with source code)中找到有关它的更多信息。
因此,如果ConstraintLayout
适合您,您可以看到this article如何利用ConstraintSet
创建干净漂亮的动画。
希望这能让你走上正轨!