我正在尝试做一些简单的事情,但我无法理解为什么它不起作用.
我要做的是:当我触摸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" />
Run Code Online (Sandbox Code Playgroud)
这是我用来调用它的代码:
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
Run Code Online (Sandbox Code Playgroud)
正如你所看到的那样,我尝试为动画添加一些时间,但它不起作用.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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4398 次 |
| 最近记录: |