Анимация пользовательского диалога

Я пытаюсь создать пользовательский диалог, как будто он сползает с текстового представления. Это возможно? Я не могу применить анимацию к классу диалога. Я пробовал эту строку в конструкторе, но это не имеет никакого эффекта:

. This.getWindow () setWindowAnimations (R.anim.paranimation);

Я даже не уверен, что анимация правильная, но я смогу ее отрегулировать, как только увижу, что она делает. Я перечислил его ниже ради полноты. Я не ищу помощь в реальной анимации, просто приложение в диалоговом окне.

paranimation.xml:

<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="-200%" android:toXDelta="0%" android:fromYDelta="200%" android:toYDelta="0%" android:duration="3000" android:zAdjustment="top"> </translate> 

Сегодня я борется с анимацией Dialog, наконец, начал работать с использованием стилей, вот пример.

Начнем с того, что самое главное – я, вероятно, сегодня работал по-разному, но не мог сказать, потому что … Если настройки анимации ваших устройств установлены на «Без анимации» (Настройки → Экран → Анимация), тогда диалоги выиграли Быть анимированным, независимо от того, что вы делаете!

Ниже приведена урезанная версия моего styles.xml. Надеюсь, это самоочевидно. Это должно быть расположено в res/values .

 <?xml version="1.0" encoding="utf-8"?> <resources> <style name="PauseDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowAnimationStyle">@style/PauseDialogAnimation</item> </style> <style name="PauseDialogAnimation"> <item name="android:windowEnterAnimation">@anim/spin_in</item> <item name="android:windowExitAnimation">@android:anim/slide_out_right</item> </style> </resources> 

windowEnterAnimation является одной из моих анимаций и находится в res\anim . windowExitAnimation – одна из анимаций, которая является частью Android SDK.

Затем, когда я создаю диалог в своих действиях onCreateDialog(int id) я делаю следующее.

 Dialog dialog = new Dialog(this, R.style.PauseDialog); // Setting the title and layout for the dialog dialog.setTitle(R.string.pause_menu_label); dialog.setContentView(R.layout.pause_menu); 

В качестве альтернативы вы можете настроить анимацию следующим образом, вместо использования конструктора Dialog, который принимает тему.

 Dialog dialog = new Dialog(this); dialog.getWindow().getAttributes().windowAnimations = R.style.PauseDialogAnimation; 

Я создал анимацию Fade in и Fade Out для Dialogbox с использованием кода ChrisJD.

  1. Внутри res / style.xml

     <style name="AppTheme" parent="android:Theme.Light" /> <style name="PauseDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowAnimationStyle">@style/PauseDialogAnimation</item> </style> <style name="PauseDialogAnimation"> <item name="android:windowEnterAnimation">@anim/fadein</item> <item name="android:windowExitAnimation">@anim/fadeout</item> </style> 

  2. Внутри anim / fadein.xml

     <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator" android:fromAlpha="0.0" android:toAlpha="1.0" android:duration="500" /> 
  3. Внутри anim / fadeut.xml

     <alpha xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/anticipate_interpolator" android:fromAlpha="1.0" android:toAlpha="0.0" android:duration="500" /> 
  4. Основная деятельность

     Dialog imageDiaglog= new Dialog(MainActivity.this,R.style.PauseDialog); 

Для справа налево (анимация ввода) и слева направо (анимация выхода):

styles.xml:

 <style name="CustomDialog" parent="@android:style/Theme.Dialog"> <item name="android:windowAnimationStyle">@style/CustomDialogAnimation</item> </style> <style name="CustomDialogAnimation"> <item name="android:windowEnterAnimation">@anim/translate_left_side</item> <item name="android:windowExitAnimation">@anim/translate_right_side</item> </style> 

Создайте два файла в res / anim /:

translate_right_side.xml:

 <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:fromXDelta="0%" android:toXDelta="100%" android:fromYDelta="0%" android:toYDelta="0%" android:duration="600"/> 

translate_left_side.xml:

 <?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="600" android:fromXDelta="100%" android:toXDelta="0%"/> 

В вас Фрагмент / Деятельность:

 Dialog dialog = new Dialog(getActivity(), R.style.CustomDialog); 

Я сталкиваюсь с той же проблемой, но, наконец, я решу проблему, следуя пути

 ((ViewGroup)dialog.getWindow().getDecorView()) .getChildAt(0).startAnimation(AnimationUtils.loadAnimation( context,android.R.anim.slide_in_left));