缩放动画后的视图,没有调整到新位置

时间:2012-07-12 07:39:22

标签: android animation

缩放动画后的视图,未调整到新位置。

我使用Android动画(ScaleAnimation)制作布局(开始时的屏幕尺寸),自身缩放到0.95倍,缩放参考屏幕中心点。

final AnimationListener al2 = new AnimationListener() {

    @Override
    public void onAnimationStart(Animation arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onAnimationRepeat(Animation arg0) {
        // TODO Auto-generated method stub

    }

    @Override
    public void onAnimationEnd(Animation arg0) {

    }
};
public void animScale(){
    ScaleAnimation sa = new ScaleAnimation(1,0.95f,1,0.95f, topLayout.getMeasuredWidth()/2, topLayout.getMeasuredHeight()/2);
    sa.setDuration(500);
    sa.setFillEnabled(true);
    sa.setFillAfter(true);
    sa.setAnimationListener(al2);
    topLayout.startAnimation(sa);

}

public void onCreate(Bundle savedInstanceState) {   

    scaleButton = (Button) findViewById(R.id.scaleButton);
    scaleButton.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub
            animScale();
        }
    });
}

在此动画之后,我的布局已更改为新位置,但是当我再次单击按钮

布局总是从屏幕尺寸缩放到0.95倍。

告诉我布局永远不会改变动画的实际大小。

我需要在动画侦听器动画结尾添加什么代码?

我希望当我点击按钮时它会实现,  屏幕尺寸 - >屏幕尺寸* 0.95 - >屏幕尺寸* 0.95 ^ 2 - > ........

非常感谢。

2 个答案:

答案 0 :(得分:1)

出现此问题是因为您使用的是Animation类。使用动画,您只能更改可见外观。 在您的情况下,您需要使用Animator来更新位置和尺寸。

动画和动画师之间的区别在this question中解释。

答案 1 :(得分:0)

ScaleAnimation不会更改布局的参数。它可以动画而无需更改参数以获得更流畅的动画效果。

您可以创建一个布尔实例变量

Boolean animationDone = false;

并在onAnimationEnd中将其设置为true以指示动画是否完成

public void onAnimationEnd(Animation arg0) {
   animationDone=true;
}

并在制作动画之前在animScale中检查它以防止多个动画....

public void animScale(){
 if ( animationDone ) return;
  //..... animation code here...
 }