如何在缩放动画后适应 RelativeLayout

how to fit RelativeLayout after a Scale Animation

将此动画应用到我的 (chield)RelativeLayout 后,我​​的背景图像尺寸合适,但我的 Layout 似乎继续在我的 Page (parent)RelativeLayout 上占据很多位置。有什么想法吗?

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true" >
<scale
    android:fromXScale="1.0"
    android:fromYScale="1.0"
    android:toXScale="0.2"
    android:toYScale="0.2"
    android:duration="700"
    >
</scale>
</set>

<RelativeLayout ...>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/chieldLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="@drawable/bigImage"
    >
    <Button
        style="@style/boutonBrun"
        android:id="@+id/btPanier"
        android:layout_centerInParent="true"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:drawableLeft="@drawable/full22lightgreen"

        />

</RelativeLayout>

</RelativeLayout>

我已经像你建议的那样添加了一个监听器来适应我的布局:

params.width = (int)  getResources().getDimension(R.dimen.size_width);

我怎么知道我必须输入的 "size_width"?就像我要求从 1.0 缩放到 0.2 并最终放置 android:layout_width="300dp",我想象 "size_width" 必须采用 60dp (300 * 0.2),但与之后的尺寸相比它非常小动画。

像这样使用动画监听器

    animation.setAnimationListener(new Animation.AnimationListener() {
        @Override
        public void onAnimationStart(Animation animation) {

        }

        @Override
        public void onAnimationEnd(Animation animation) {
            // set height for your relative layout here
        }

        @Override
        public void onAnimationRepeat(Animation animation) {

        }
    });

我不确定我是否正确理解了你的问题,但你可以为你的动画添加一个动画监听器:

yourAnimation.setAnimationListener(new Animation.AnimationListener() {
                     @Override
                     public void onAnimationStart(Animation animation) {

                     }

                     @Override
                     public void onAnimationEnd(Animation animation) {

                     }

                     @Override
                     public void onAnimationRepeat(Animation animation) {

                     }
                  });

并在 onAnimationEnd 中尝试使您的视图无效。

yourView.invalidate();

最后,我只是停止使用参数 android:fillAfter="true",他似乎没有改变布局的大小...我只是用 onAnimationEnd 改变布局的大小.

  RelativeLayout.LayoutParams  params = (RelativeLayout.LayoutParams) myRelativeLayout.getLayoutParams();

  params.width = (int) getResources().getDimension(R.dimen.little_house_width);
  params.height = (int) getResources().getDimension(R.dimen.little_house_height);
  setLayoutParams(params);