Преглед на файлове

added animated visibility for draft screen

sirekanian преди 3 години
родител
ревизия
7868b09e8d
променени са 2 файла, в които са добавени 19 реда и са изтрити 8 реда
  1. 10 7
      app/src/main/java/com/sirekanian/spacetime/MainScreen.kt
  2. 9 1
      app/src/main/java/com/sirekanian/spacetime/ext/AnimatedVisibility.kt

+ 10 - 7
app/src/main/java/com/sirekanian/spacetime/MainScreen.kt

@@ -7,6 +7,7 @@ import androidx.compose.foundation.layout.systemBars
 import androidx.compose.runtime.Composable
 import com.google.accompanist.pager.ExperimentalPagerApi
 import com.google.accompanist.pager.HorizontalPager
+import com.sirekanian.spacetime.ext.ScreenAnimatedVisibility
 import com.sirekanian.spacetime.model.EditablePage
 import com.sirekanian.spacetime.model.EditablePage.Autofocus
 import com.sirekanian.spacetime.model.GalleryPage
@@ -56,12 +57,14 @@ fun MainScreen(presenter: MainPresenter) {
             }
         }
     }
-    state.draft?.let { draft ->
-        DraftPage(
-            insets = insets,
-            editablePage = draft,
-            onClose = { state.editablePage = null },
-            onDone = { presenter.savePage(it) },
-        )
+    ScreenAnimatedVisibility(visible = state.draft != null) {
+        state.draft?.let { draft ->
+            DraftPage(
+                insets = insets,
+                editablePage = draft,
+                onClose = { state.editablePage = null },
+                onDone = { presenter.savePage(it) },
+            )
+        }
     }
 }

+ 9 - 1
app/src/main/java/com/sirekanian/spacetime/ext/AnimatedVisibility.kt

@@ -3,11 +3,19 @@ package com.sirekanian.spacetime.ext
 import androidx.compose.animation.AnimatedVisibility
 import androidx.compose.animation.fadeIn
 import androidx.compose.animation.fadeOut
+import androidx.compose.animation.slideInVertically
 import androidx.compose.runtime.Composable
 
 @Composable
 fun DefaultAnimatedVisibility(visible: Boolean, content: @Composable () -> Unit) {
-    AnimatedVisibility(visible = visible, enter = fadeIn(), exit = fadeOut()) {
+    AnimatedVisibility(visible, enter = fadeIn(), exit = fadeOut()) {
+        content()
+    }
+}
+
+@Composable
+fun ScreenAnimatedVisibility(visible: Boolean, content: @Composable () -> Unit) {
+    AnimatedVisibility(visible, enter = fadeIn() + slideInVertically { it / 8 }, exit = fadeOut()) {
         content()
     }
 }