如何在缩放动画后适应 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);
将此动画应用到我的 (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);