From 52f25773d355ac400a7efa616d82fd2a657a76b1 Mon Sep 17 00:00:00 2001
From: Taras Smakula <tarassmakula@gmail.com>
Date: Mon, 18 Mar 2024 13:27:34 +0200
Subject: [PATCH] Add animations for dialog fragments

---
 .../core/base/fragment/BaseFullscreenDialogFragment.kt    | 3 ++-
 core/src/main/res/anim/alpha_show.xml                     | 8 ++++++++
 core/src/main/res/anim/slide_out.xml                      | 8 ++++++++
 core/src/main/res/values/styles.xml                       | 5 +++++
 4 files changed, 23 insertions(+), 1 deletion(-)
 create mode 100644 core/src/main/res/anim/alpha_show.xml
 create mode 100644 core/src/main/res/anim/slide_out.xml

diff --git a/core/src/main/java/org/futo/circles/core/base/fragment/BaseFullscreenDialogFragment.kt b/core/src/main/java/org/futo/circles/core/base/fragment/BaseFullscreenDialogFragment.kt
index 9019e7d4e..d744f4557 100644
--- a/core/src/main/java/org/futo/circles/core/base/fragment/BaseFullscreenDialogFragment.kt
+++ b/core/src/main/java/org/futo/circles/core/base/fragment/BaseFullscreenDialogFragment.kt
@@ -9,8 +9,8 @@ import android.view.WindowManager
 import androidx.appcompat.app.AppCompatDialogFragment
 import androidx.viewbinding.ViewBinding
 import com.google.android.material.appbar.MaterialToolbar
-import org.futo.circles.core.base.NoInternetConnectionViewPresenter
 import org.futo.circles.core.R
+import org.futo.circles.core.base.NoInternetConnectionViewPresenter
 import org.futo.circles.core.extensions.onBackPressed
 
 
@@ -32,6 +32,7 @@ abstract class BaseFullscreenDialogFragment(
     ): View? {
         _binding = inflate.invoke(inflater, container, false)
         dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN)
+        dialog?.window?.attributes?.windowAnimations = R.style.DialogSlideAnimation
         return _binding?.root
     }
 
diff --git a/core/src/main/res/anim/alpha_show.xml b/core/src/main/res/anim/alpha_show.xml
new file mode 100644
index 000000000..8731e7dbc
--- /dev/null
+++ b/core/src/main/res/anim/alpha_show.xml
@@ -0,0 +1,8 @@
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shareInterpolator="false">
+    <alpha
+        android:duration="@android:integer/config_shortAnimTime"
+        android:fromAlpha="0"
+        android:interpolator="@android:anim/linear_interpolator"
+        android:toAlpha="1" />
+</set>
\ No newline at end of file
diff --git a/core/src/main/res/anim/slide_out.xml b/core/src/main/res/anim/slide_out.xml
new file mode 100644
index 000000000..092cb1ece
--- /dev/null
+++ b/core/src/main/res/anim/slide_out.xml
@@ -0,0 +1,8 @@
+<set xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shareInterpolator="false">
+    <translate
+        android:duration="@android:integer/config_shortAnimTime"
+        android:fromXDelta="0%"
+        android:interpolator="@android:anim/linear_interpolator"
+        android:toXDelta="100%" />
+</set>
\ No newline at end of file
diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml
index 5fa6d0b13..abbec47bf 100644
--- a/core/src/main/res/values/styles.xml
+++ b/core/src/main/res/values/styles.xml
@@ -91,4 +91,9 @@
         <item name="android:paddingTop">8dp</item>
     </style>
 
+    <style name="DialogSlideAnimation">
+        <item name="android:windowEnterAnimation">@anim/alpha_show</item>
+        <item name="android:windowExitAnimation">@anim/slide_out</item>
+    </style>
+
 </resources>
\ No newline at end of file
-- 
GitLab