8

したがって、現在、デフォルトで、ダイアログは次のコマンドで閉じられると、このズームイン フェードアウト効果を実行しています。dialog.dismiss();

自分のアニメーションになるようにオーバーライドするにはどうすればよいですか?

AlphaAnimation fadeOut = new AlphaAnimation(1, 0);
fadeOut.setDuration(600);
view.setAnimation(fadeOut);
view.startAnimation(fadeOut);

編集:

以下の回答のおかげで、私はそれを理解することができました。却下を変更する代わりに、アニメーションを実行してから、そのように却下しました。

public void fadeOutHUD(View view) {
        AlphaAnimation fadeOut = new AlphaAnimation(1, 0);
        fadeOut.setDuration(800);
        view.setAnimation(fadeOut);
        view.startAnimation(fadeOut);
        fadeOut.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {

            }

            @Override
            public void onAnimationEnd(Animation animation) {
                dismiss();
            }

            @Override
            public void onAnimationRepeat(Animation animation) {

            }
        });
    }

public void dismissHUD() {
        fadeOutHUD(findViewById(R.id.progressHud));
    }

そしてそれをそのように呼んだdialog.dismissHUD();

4

3 に答える 3

7

オーバーライドする必要はないと思いますDialog.dismiss()

必要に応じてダイアログをアニメーション化し、アニメーションの最後でダイアログを閉じます。

@Override
public void onAnimationEnd(Animation animation) {
        dialog.dismiss();
}
于 2013-09-22T05:12:10.687 に答える
6

あなたは利用する必要があります

dialog.getWindow().getAttributes().windowAnimations開始および終了/終了アニメーションをオーバーライドするフラグ。

このブログ投稿では、アニメーションをうまくオーバーライドする方法について説明しています: http://flowovertop.blogspot.in/2013/03/android-alert-dialog-with-animation.html

于 2013-09-22T05:01:00.173 に答える
0

Dialogクラスを拡張し( を使用することをお勧めします) 、独自のカスタム を使用してDialogFragmentオーバーライドします。dismiss()Animation

于 2013-09-22T04:59:07.157 に答える