【发布时间】:2012-12-04 08:22:11
【问题描述】:
我正在使用翻译和缩放动画。首先,我将框架布局转换为屏幕中心,然后使用布局参数将其位置参数设置为屏幕中心。这很好用!在翻译动画结束时,我运行缩放动画,我的布局缩放为原始大小的 2 倍。实际上我的框架布局(我正在制作动画)由按钮和图像视图组成。与在 android 中一样,动画不会改变视图,它只会改变必须绘制的位置。现在我的问题是我无法让我的按钮工作。因为它们实际上并不存在!
我通过在动画结束后设置其位置参数找到了平移动画的解决方案。这会将视图永久移动到新位置。
但是,在缩放动画的情况下,我必须更改布局的大小以及其中的子级。但它不起作用,因为我将原始高度宽度与比例因子相乘。这是我的缩放动画代码。
ScaleAnimation scaleAnim = new ScaleAnimation(1.0f, 2.0f, 1.0f,
2.0f, Animation.RELATIVE_TO_SELF, 0.5f,
Animation.RELATIVE_TO_SELF, 0.5f);
scaleAnim.setDuration(600);
// scaleAnim.setFillEnabled(true);
scaleAnim.setFillAfter(true);
view.setAnimation(scaleAnim);
view.startAnimation(scaleAnim);
scaleAnim.setAnimationListener(new AnimationListener() {
public void onAnimationStart(Animation animation) {
}
public void onAnimationRepeat(Animation animation) {
}
public void onAnimationEnd(Animation animation) {
FrameLayout.LayoutParams par = (FrameLayout.LayoutParams) view
.getLayoutParams();
par.height = view.getMeasuredHeight() * 2;
par.width = view.getMeasuredWidth() * 2;
view.setLayoutParams(par);
view.requestLayout();
}
});
p.s setFillAfter(true) 和 setFillEnabled(true) 不是解决方案。
【问题讨论】:
-
您可以通过在动画结束时将所有内容放置在您想要的位置来做到这一点,然后将其动画到该位置。确保在动画开始之前将其隐藏,并在动画结束之前禁用按钮。
-
问题是通过缩放动画,缩放后原始高度和宽度不会改变。所以我的按钮不起作用
-
即使您创建它们的全尺寸然后将它们从 10% 缩放到原始尺寸也不行吗?我用平移和缩放动画做了类似的事情。动画完成后,我可以单击按钮。我会尽力为你挖掘那段代码。
-
解决方案将不胜感激。实际上它就像一个对话框。我将它移到中心设置是使用布局 para 边距居中。然后将其放大两倍于原始大小。但是我的按钮仍保留在其他地方,而不是显示的地方。
标签: android animation android-framelayout scaletransform