0

爆発をシミュレートするアニメーションを作成しました: このアニメーションの「ブーム」イメージ:

アクティビティでの爆発.xml HyperspaceExplosion

<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>

プレーヤーが爆弾の爆発をクリックすると始まります。爆発の終わりに、ダイアログを開きたいです。

爆弾動作の簡単なコード:

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);

                    }
                }
);

問題は、爆発とダイアログが時間的に競合し、ダイアログが開いた後も爆発が続くことです。

爆発前の 2 つのイベントをシンクロナイズしたいと思います。爆発の最後に、ダイアログを開きたい。

誰でも私を助けることができますか?

アドバイスありがとう。

4

1 に答える 1

7

を使用して、AnimationListener内でダイアログを開きますonAnimationEnd()

たとえば、次のようにします。

Animation a = getHyperspaceExplosion();
a.setAnimationListener(new AnimationListener() {
    public void onAnimationEnd(Animation animation) {
        showDialog(1);
    }

    // ..other listener methods here..
});
getExplosionImage().startAnimation(a);
于 2011-11-20T17:18:41.927 に答える