Search code examples
androidandroid-animationshowdialog

showDialog after animation android


I created an animation that simulates an explosion: a "booom" image with this animation:

explosion.xml HyperspaceExplosion on Activity

<set xmlns:android="http://schemas.android.com/apk/res/android"
android:shareInterpolator="false">


<scale
    android:interpolator="@android:anim/bounce_interpolator"
    android:fromXScale="1.0"
    android:toXScale="2.0"
    android:fromYScale="1.0"
    android:toYScale="2.5"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fillAfter="false"
    android:fillBefore="false"
    android:duration="3000"
     />
</set>

when a player clicks on the bomb explosion begins. At the end of explosion I want open a Dialog.

the simple code for bomb behaviour:

getBombImage().setOnClickListener(
            new View.OnClickListener() {

                MediaPlayer mp = null;

                    @Override
                    public void onClick(View v) {


                             getExplosionImage().setVisibility(View.VISIBLE);

                        if(!isSoundOff()){
                            mp = MediaPlayer.create(getApplicationContext(), R.raw.explosion);
                            mp.start();
                        }

                        getExplosionImage().startAnimation(getHyperspaceExplosion());
                        getExplosionImage().setVisibility(View.INVISIBLE);

                        showDialog(1);

                    }
                }
);

The problem is that the explosion and the dialog are in conflict in terms of time and the explosion continues after the dialog is open.

I want sincronize two events: before the explosion. At the end of explosion, I want open the dialog.

Anybody ca help me?

Thanks in advice.


Solution

  • Use an AnimationListener and open your dialog inside onAnimationEnd().

    For example like this:

    Animation a = getHyperspaceExplosion();
    a.setAnimationListener(new AnimationListener() {
        public void onAnimationEnd(Animation animation) {
            showDialog(1);
        }
    
        // ..other listener methods here..
    });
    getExplosionImage().startAnimation(a);