0

我有一个 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 我得到了这个:

在此处输入图像描述

4

1 回答 1

1

断断续续的动画正在发生,因为这不是应该使用动画的方式。这些将使用传递给方法的 Transformation 对象。

但是因为您使用的是简单的翻译,所以您可以使用 TranslateAnimation 轻松实现这一点,如下所示:

翻译动画

于 2013-06-25T21:43:31.243 回答