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