我有一个 LinearLayout(称为布局),其高度为 fill_parent,并且在 RelativeLayout 内的初始上边距为 200dp。当我单击一个按钮时,我希望 topMargin 变为 0,从而展开 LinearLayout。我正在使用下一个代码:
final RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.FILL_PARENT,
RelativeLayout.LayoutParams.FILL_PARENT);
Animation animation = new Animation() {
@Override
protected void applyTransformation(float interpolatedTime,
Transformation t) {
int topMargin = (int)((1-interpolatedTime)*200);
layoutParams.setMargins(0, topMargin, 0, 0);
layout.setLayoutParams(layoutParams);
LogThis.debug("topMargin: "+topMargin);
}
};
animation.setDuration(1000);
layout.startAnimation(animation);
问题是它虽然做了动画,但并不软。它分 4 步进行转换,所以看起来不太好。
你知道如何轻柔地进行这种转变吗?
先感谢您。
编辑
我一开始就有这个:
在动画之后我想要这个:
使用 TranslationAnimation 我得到了这个: