12

I have to slide in an AlertDialog when it enters and slide it out when it is dismissed, but it is not animating.

So how do I get the animation to work ?

Here is what I have,

public class SlideDialogFragment extends DialogFragment {
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
              return  new AlertDialog.Builder(new ContextThemeWrapper(getActivity(),R.style.SlidingDialog))
                      .setTitle("Sliding dialog")
                      .create()
     }

themes.xml

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="SlidingDialog" parent="@android:style/Theme.DeviceDefault.Dialog">
        <item name="android:windowAnimationStyle">@style/SlidingDialogAnimation</item>
    </style>
    <style name="SlidingDialogAnimation">
        <item name="android:windowEnterAnimation">@android:anim/slide_in_left</item>
        <item name="android:windowExitAnimation">@android:anim/slide_out_right</item>
    </style>
</resources>

I have referred too many resources and there doesn't seem to be a single proper way to do this that works for me, may be I am missing something

I am using

  • Android ICS
  • App is built for API 15+

Here are some related resources that I couldn't get the answer from

Community
  • 1
  • 1
Gautam
  • 7,868
  • 12
  • 64
  • 105
  • if You can make an activity slide in and slide out.Use it for AlertDialog just change its theme to dialog..That is creating the activity in place of dialog and making it work as dialog..It would simplify your problem..just a suggestion. – Rekha Aug 21 '12 at 05:41
  • I considered that but Its too much of a pain to manipulate its contents at runtime. – Gautam Aug 21 '12 at 05:43

1 Answers1

12

Here is the working code using the reference and code from the above.

// Declare a Builder.
AlertDialog.Builder builder = new AlertDialog.Builder(context);

// You can even inflate a layout to the AlertDialog.Builder, if looking to create a custom one.
// Add and fill all required builder methods, as per your need.


// Now create object of AlertDialog from the Builder.
final AlertDialog dialog = builder.create();

// Let's start with animation work. We just need to create a style and use it here as follows.
if (dialog.getWindow() != null)
    dialog.getWindow().getAttributes().windowAnimations = R.style.SlidingDialogAnimation;

dialog.show();

Regarding Style, I used the same style as used in question (in styles.xml).

<style name="SlidingDialogAnimation">
        <item name="android:windowEnterAnimation">@android:anim/slide_in_left</item>
        <item name="android:windowExitAnimation">@android:anim/slide_out_right</item>
</style>

But you can use any other custom files by placing an animation XML file in the res/anim folder.

Thanks.

Harpreet
  • 2,990
  • 3
  • 38
  • 52