Question

So right now by default the Dialog is doing this zoomin fade out effect when it gets dismissed with dialog.dismiss();

how can i override it to be my own Animation?

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

EDIT:

Thanks to the answer bellow i was able to figure it out. Instead of modifying the dismissal, i did the animation then dismissed it like so.

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

And called it like so dialog.dismissHUD();

Was it helpful?

Solution

I don't think you need to override the Dialog.dismiss()

You just animate the dialog as you wanted and at the end of animation, dismiss it.

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

OTHER TIPS

You will need to make use of

dialog.getWindow().getAttributes().windowAnimations flag to override the enter and exit/ dismiss animations.

This blog post explains to override the animation very well : http://flowovertop.blogspot.in/2013/03/android-alert-dialog-with-animation.html

Extend the Dialog class (it is recommended you use DialogFragment) and override its dismiss() using your own custom Animation.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top