android – 动画BEFORE活动改变

我正在尝试做一些简单的事情,但我无法理解为什么它不起作用.
我要做的是:当我触摸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中的动画完成.
知道为什么会这样吗?

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

@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

转载注明原文:android – 动画BEFORE活动改变 - 代码日志