如何将高度布局更改为animation(以编程方式)

如何以编程方式将高度布局更改为animation?

第一:

在此处输入图像描述

之后:

在此处输入图像描述

Heey Amigo,

在测试我的代码之后,我看到了一个小问题。 因为我使用"scaleY"它只是“拉伸”视图。 这意味着如果视图中有某些文本或某些内容,它只会拉伸它并且看起来不会很好。 尝试使用ValueAnimator ,它的工作更加流畅

 public void onClick(View v) { if(!isBig){ ValueAnimator va = ValueAnimator.ofInt(100, 200); va.setDuration(400); va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator animation) { Integer value = (Integer) animation.getAnimatedValue(); v.getLayoutParams().height = value.intValue(); v.requestLayout(); } }); va.start(); isBig = true; } else{ ValueAnimator va = ValueAnimator.ofInt(200, 100); va.setDuration(400); va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { public void onAnimationUpdate(ValueAnimator animation) { Integer value = (Integer) animation.getAnimatedValue(); v.getLayoutParams().height = value.intValue(); v.requestLayout(); } }); va.start(); isBig = false; } } 

XML:

    

旧答案您可以使用ObjectAnimator,只需记住设置pivotY(0) ,使其仅在底部移动。 自己玩它来匹配你的需求:)

 private boolean isBig = false; ... public void onClick(View v) { v.setPivotY(0f); if(!isBig){ ObjectAnimator scaleY = ObjectAnimator.ofFloat(v, "scaleY", 2f); scaleY.setInterpolator(new DecelerateInterpolator()); scaleY.start(); isBig = true; } else{ ObjectAnimator scaleY = ObjectAnimator.ofFloat(v, "scaleY", 1f); scaleY.setInterpolator(new DecelerateInterpolator()); scaleY.start(); isBig = false; } }