From dd3a3df724579d5ccab50c89f26dd34efd8d675b Mon Sep 17 00:00:00 2001 From: Helen Qin Date: Wed, 5 Apr 2023 00:22:01 +0000 Subject: [PATCH] [CredManUi] Dismiss system bars immediately upon bottom sheet dismissal Before the bottom sheet dismissal animatyion is applied to the system bars so they have to travel the whole screen to fade out.Now the system bars are immediately set to invisible upon dismissal. Bug: 271590672 Test: manually (see bug for recordings) Change-Id: Ib385ed5455eceabbeadb6d3c41c4382b01a9ea74 --- .../com/android/credentialmanager/common/ui/BottomSheet.kt | 7 +++++++ .../com/android/credentialmanager/common/ui/SnackBar.kt | 3 +++ .../createflow/CreateCredentialComponents.kt | 4 ---- .../credentialmanager/getflow/GetCredentialComponents.kt | 7 ------- 4 files changed, 10 insertions(+), 11 deletions(-) diff --git a/packages/CredentialManager/src/com/android/credentialmanager/common/ui/BottomSheet.kt b/packages/CredentialManager/src/com/android/credentialmanager/common/ui/BottomSheet.kt index edc902e41e9a0..53731f06816a9 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/common/ui/BottomSheet.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/common/ui/BottomSheet.kt @@ -22,6 +22,7 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color +import com.android.compose.rememberSystemUiController import com.android.credentialmanager.common.material.ModalBottomSheetLayout import com.android.credentialmanager.common.material.ModalBottomSheetValue import com.android.credentialmanager.common.material.rememberModalBottomSheetState @@ -38,6 +39,12 @@ fun ModalBottomSheet( initialValue = ModalBottomSheetValue.Expanded, skipHalfExpanded = true ) + val sysUiController = rememberSystemUiController() + if (state.targetValue == ModalBottomSheetValue.Hidden) { + setTransparentSystemBarsColor(sysUiController) + } else { + setBottomSheetSystemBarsColor(sysUiController) + } ModalBottomSheetLayout( sheetBackgroundColor = LocalAndroidColorScheme.current.colorSurfaceBright, modifier = Modifier.background(Color.Transparent), diff --git a/packages/CredentialManager/src/com/android/credentialmanager/common/ui/SnackBar.kt b/packages/CredentialManager/src/com/android/credentialmanager/common/ui/SnackBar.kt index dfff3d6948779..244b604a87f90 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/common/ui/SnackBar.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/common/ui/SnackBar.kt @@ -37,6 +37,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.platform.LocalAccessibilityManager import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp +import com.android.compose.rememberSystemUiController import com.android.credentialmanager.R import com.android.credentialmanager.common.material.Scrim import com.android.credentialmanager.ui.theme.Shapes @@ -49,6 +50,8 @@ fun Snackbar( onDismiss: () -> Unit, dismissOnTimeout: Boolean = false, ) { + val sysUiController = rememberSystemUiController() + setTransparentSystemBarsColor(sysUiController) BoxWithConstraints { Box(Modifier.fillMaxSize()) { Scrim( diff --git a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialComponents.kt b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialComponents.kt index ed4cc959543b4..648d83268541d 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialComponents.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/createflow/CreateCredentialComponents.kt @@ -46,7 +46,6 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.core.graphics.drawable.toBitmap -import com.android.compose.rememberSystemUiController import com.android.credentialmanager.CredentialSelectorViewModel import com.android.credentialmanager.R import com.android.credentialmanager.common.BaseEntry @@ -67,7 +66,6 @@ import com.android.credentialmanager.common.ui.MoreOptionTopAppBar import com.android.credentialmanager.common.ui.SheetContainerCard import com.android.credentialmanager.common.ui.PasskeyBenefitRow import com.android.credentialmanager.common.ui.HeadlineText -import com.android.credentialmanager.common.ui.setBottomSheetSystemBarsColor import com.android.credentialmanager.logging.CreateCredentialEvent import com.android.internal.logging.UiEventLogger.UiEventEnum @@ -77,8 +75,6 @@ fun CreateCredentialScreen( createCredentialUiState: CreateCredentialUiState, providerActivityLauncher: ManagedActivityResultLauncher ) { - val sysUiController = rememberSystemUiController() - setBottomSheetSystemBarsColor(sysUiController) ModalBottomSheet( sheetContent = { // Hide the sheet content as opposed to the whole bottom sheet to maintain the scrim diff --git a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialComponents.kt b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialComponents.kt index c27ac943bca7a..6d7ecd70eb0bb 100644 --- a/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialComponents.kt +++ b/packages/CredentialManager/src/com/android/credentialmanager/getflow/GetCredentialComponents.kt @@ -41,7 +41,6 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.unit.dp import androidx.core.graphics.drawable.toBitmap -import com.android.compose.rememberSystemUiController import com.android.credentialmanager.CredentialSelectorViewModel import com.android.credentialmanager.R import com.android.credentialmanager.common.BaseEntry @@ -62,8 +61,6 @@ import com.android.credentialmanager.common.ui.CredentialListSectionHeader import com.android.credentialmanager.common.ui.HeadlineIcon import com.android.credentialmanager.common.ui.LargeLabelTextOnSurfaceVariant import com.android.credentialmanager.common.ui.Snackbar -import com.android.credentialmanager.common.ui.setTransparentSystemBarsColor -import com.android.credentialmanager.common.ui.setBottomSheetSystemBarsColor import com.android.credentialmanager.logging.GetCredentialEvent import com.android.internal.logging.UiEventLogger.UiEventEnum @@ -73,9 +70,7 @@ fun GetCredentialScreen( getCredentialUiState: GetCredentialUiState, providerActivityLauncher: ManagedActivityResultLauncher ) { - val sysUiController = rememberSystemUiController() if (getCredentialUiState.currentScreenState == GetScreenState.REMOTE_ONLY) { - setTransparentSystemBarsColor(sysUiController) RemoteCredentialSnackBarScreen( onClick = viewModel::getFlowOnMoreOptionOnSnackBarSelected, onCancel = viewModel::onUserCancel, @@ -84,7 +79,6 @@ fun GetCredentialScreen( viewModel.uiMetrics.log(GetCredentialEvent.CREDMAN_GET_CRED_SCREEN_REMOTE_ONLY) } else if (getCredentialUiState.currentScreenState == GetScreenState.UNLOCKED_AUTH_ENTRIES_ONLY) { - setTransparentSystemBarsColor(sysUiController) EmptyAuthEntrySnackBarScreen( authenticationEntryList = getCredentialUiState.providerDisplayInfo.authenticationEntryList, @@ -95,7 +89,6 @@ fun GetCredentialScreen( viewModel.uiMetrics.log(GetCredentialEvent .CREDMAN_GET_CRED_SCREEN_UNLOCKED_AUTH_ENTRIES_ONLY) } else { - setBottomSheetSystemBarsColor(sysUiController) ModalBottomSheet( sheetContent = { // Hide the sheet content as opposed to the whole bottom sheet to maintain the scrim