如何在缩放动画后适合RelativeLayout

时间:2015-04-10 10:11:02

标签: android scale relativelayout

将此动画应用于我的(chield)RelativeLayout后,我的背景图像具有良好的大小,但我的布局似乎继续在我的页面(父级)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);

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

3 个答案:

答案 0 :(得分:0)

使用像这样的动画监听器

    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) {

        }
    });

答案 1 :(得分:0)

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

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();

答案 2 :(得分:0)

最后,我只是停止使用param 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);