动画更改活动之前的动画

时间:2010-11-30 23:37:07

标签: android

我正在尝试做一些简单的事情,但我无法理解为什么它不起作用 我要做的是:当我触摸ImageView时,它会在其上显示动画。然后,只有当动画结束时才会启动新活动 相反,会发生的事情是新活动立即开始并且不显示动画。

这是动画xml:

<rotate android:interpolator="@android:anim/decelerate_interpolator"
    android:fromDegrees="-45"
    android:toDegrees="-10"
    android:pivotX="90%"
    android:pivotY="10%"
    android:repeatCount="3"
    android:fillAfter="false"
    android:duration="10000" />

这是我用来调用它的代码:

public void onCreate( Bundle savedInstanceState )
{
    final ImageView ib = (ImageView)this.findViewById( R.id.photo );
    ib.setOnClickListener( new OnClickListener( ) {

        @Override
        public void onClick( View v )
        {
            Animation hang_fall = AnimationUtils.loadAnimation( Curriculum.this, R.anim.hang_fall );
            v.startAnimation( hang_fall );
            Intent i = new Intent( ThisActivity.this, NextActivity.class );
            ThisActivity.this.startActivity( i );
        }// end onClick
    } );
}// end onCreate

如你所见,我尝试为动画添加一段时间,但它不起作用。 NextActivity立即启动,它不会等待ThisActivity中的动画完成 有没有想过为什么会这样?

2 个答案:

答案 0 :(得分:4)

那是因为你同时开始了意图和动画。您需要在动画结束后启动意图,如下所示:

@Override
public void onClick( View v )
{
    Animation hang_fall = AnimationUtils.loadAnimation( Curriculum.this, R.anim.hang_fall );
    hang_fall.setAnimationListener(new Animation.AnimationListener()
        {
            public void onAnimationEnd(Animation animation)
            {
                Intent i = new Intent( ThisActivity.this, NextActivity.class );
                ThisActivity.this.startActivity( i );
            }

            public void onAnimationRepeat(Animation animation)
            {
                // Do nothing!
            }

            public void  onAnimationStart(Animation animation)
            {
                // Do nothing!
            }
        });
    v.startAnimation( hang_fall );
}// end onClick

答案 1 :(得分:2)