diff options
author | vigneshrsastra <vigneshrsastra@google.com> | 2023-12-13 04:58:46 +0000 |
---|---|---|
committer | vigneshrsastra <vigneshrsastra@google.com> | 2023-12-13 05:00:46 +0000 |
commit | b17a639bf909ba866450fc6667653891c64beaa7 (patch) | |
tree | b05f006378409ec3a0597f9d757a611e9fb0c5f1 | |
parent | 7f697ba6890808dcfb109c70ea1ea1582ac2ce49 (diff) | |
download | Permission-b17a639bf909ba866450fc6667653891c64beaa7.tar.gz |
Fix for Swipe to Dismiss Animation
Fixes: b/307873239
Test: Existing Swipe back animations checked.
Screen Capture here: https://screenshot.googleplex.com/Bd2U66tnRhAJvse
Change-Id: Ifecb8d76f4039321f3c4c61e7728b4da0933b79d
-rw-r--r-- | PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ScrollableScreen.kt | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ScrollableScreen.kt b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ScrollableScreen.kt index df7a56464..3776c596f 100644 --- a/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ScrollableScreen.kt +++ b/PermissionController/src/com/android/permissioncontroller/permission/ui/wear/elements/ScrollableScreen.kt @@ -53,9 +53,11 @@ import androidx.compose.ui.unit.dp import androidx.fragment.app.FragmentActivity import androidx.lifecycle.Lifecycle import androidx.lifecycle.repeatOnLifecycle +import androidx.wear.compose.foundation.SwipeToDismissValue import androidx.wear.compose.foundation.lazy.ScalingLazyColumn import androidx.wear.compose.foundation.lazy.ScalingLazyListScope import androidx.wear.compose.foundation.lazy.ScalingLazyListState +import androidx.wear.compose.foundation.rememberSwipeToDismissBoxState import androidx.wear.compose.material.CircularProgressIndicator import androidx.wear.compose.material.MaterialTheme import androidx.wear.compose.material.PositionIndicator @@ -87,30 +89,30 @@ fun ScrollableScreen( ) { var dismissed by remember { mutableStateOf(false) } val activity = LocalContext.current.findActivity() + val state = rememberSwipeToDismissBoxState() + + LaunchedEffect(state.currentValue) { + if (state.currentValue == SwipeToDismissValue.Dismissed) { + dismiss(activity) + dismissed = true + state.snapTo(SwipeToDismissValue.Default) + } + } // To support Swipe-dismiss effect, // add the view to SwipeToDismissBox if the screen is not on the top fragment. if (getBackStackEntryCount(activity) > 0) { - SwipeToDismissBox( - onDismissed = { - dismiss(activity) - dismissed = true - } - ) { isBackground -> - if (isBackground || dismissed) { - Box(modifier = Modifier.fillMaxSize()) - } else { - Scaffold( - showTimeText, - title, - subtitle, - image, - isLoading, - content, - titleTestTag, - subtitleTestTag - ) - } + SwipeToDismissBox(state = state) { isBackground -> + Scaffold( + showTimeText, + title, + subtitle, + image, + isLoading = isLoading || isBackground || dismissed, + content, + titleTestTag, + subtitleTestTag + ) } } else { Scaffold( |