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