diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index 38cb7efe2..df5cfa296 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -106,7 +106,6 @@ dependencies {
debugImplementation(libs.androidx.compose.ui.testManifest)
debugImplementation(project(":ui-test-hilt-manifest"))
- implementation(libs.accompanist.systemuicontroller)
implementation(libs.androidx.activity.compose)
implementation(libs.androidx.appcompat)
implementation(libs.androidx.core.ktx)
diff --git a/app/src/main/java/com/google/samples/apps/nowinandroid/MainActivity.kt b/app/src/main/java/com/google/samples/apps/nowinandroid/MainActivity.kt
index e107fd88c..7fe1bc674 100644
--- a/app/src/main/java/com/google/samples/apps/nowinandroid/MainActivity.kt
+++ b/app/src/main/java/com/google/samples/apps/nowinandroid/MainActivity.kt
@@ -19,7 +19,9 @@ package com.google.samples.apps.nowinandroid
import android.os.Bundle
import android.util.Log
import androidx.activity.ComponentActivity
+import androidx.activity.SystemBarStyle
import androidx.activity.compose.setContent
+import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
@@ -31,13 +33,11 @@ import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.setValue
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
-import androidx.core.view.WindowCompat
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.lifecycleScope
import androidx.lifecycle.repeatOnLifecycle
import androidx.metrics.performance.JankStats
import androidx.profileinstaller.ProfileVerifier
-import com.google.accompanist.systemuicontroller.rememberSystemUiController
import com.google.samples.apps.nowinandroid.MainActivityUiState.Loading
import com.google.samples.apps.nowinandroid.MainActivityUiState.Success
import com.google.samples.apps.nowinandroid.core.analytics.AnalyticsHelper
@@ -108,16 +108,28 @@ class MainActivity : ComponentActivity() {
}
// Turn off the decor fitting system windows, which allows us to handle insets,
- // including IME animations
- WindowCompat.setDecorFitsSystemWindows(window, false)
+ // including IME animations, and go edge-to-edge
+ // This also sets up the initial system bar style based on the platform theme
+ enableEdgeToEdge()
setContent {
- val systemUiController = rememberSystemUiController()
val darkTheme = shouldUseDarkTheme(uiState)
- // Update the dark content of the system bars to match the theme
- DisposableEffect(systemUiController, darkTheme) {
- systemUiController.systemBarsDarkContentEnabled = !darkTheme
+ // Update the edge to edge configuration to match the theme
+ // This is the same parameters as the default enableEdgeToEdge call, but we manually
+ // resolve whether or not to show dark theme using uiState, since it can be different
+ // than the configuration's dark theme value based on the user preference.
+ DisposableEffect(darkTheme) {
+ enableEdgeToEdge(
+ statusBarStyle = SystemBarStyle.auto(
+ android.graphics.Color.TRANSPARENT,
+ android.graphics.Color.TRANSPARENT,
+ ) { darkTheme },
+ navigationBarStyle = SystemBarStyle.auto(
+ lightScrim,
+ darkScrim,
+ ) { darkTheme },
+ )
onDispose {}
}
@@ -224,3 +236,15 @@ private fun shouldUseDarkTheme(
DarkThemeConfig.DARK -> true
}
}
+
+/**
+ * The default light scrim, as defined by androidx and the platform:
+ * https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:activity/activity/src/main/java/androidx/activity/EdgeToEdge.kt;l=35-38;drc=27e7d52e8604a080133e8b842db10c89b4482598
+ */
+private val lightScrim = android.graphics.Color.argb(0xe6, 0xFF, 0xFF, 0xFF)
+
+/**
+ * The default dark scrim, as defined by androidx and the platform:
+ * https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:activity/activity/src/main/java/androidx/activity/EdgeToEdge.kt;l=40-44;drc=27e7d52e8604a080133e8b842db10c89b4482598
+ */
+private val darkScrim = android.graphics.Color.argb(0x80, 0x1b, 0x1b, 0x1b)
diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml
index b014ff647..2cf4177e6 100644
--- a/app/src/main/res/values-night/themes.xml
+++ b/app/src/main/res/values-night/themes.xml
@@ -16,10 +16,7 @@
-->
-
+
-
diff --git a/app/src/main/res/values-v27/themes.xml b/app/src/main/res/values-v27/themes.xml
deleted file mode 100644
index 969e51914..000000000
--- a/app/src/main/res/values-v27/themes.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml
index 82456f53a..7cdd25527 100644
--- a/app/src/main/res/values/themes.xml
+++ b/app/src/main/res/values/themes.xml
@@ -18,19 +18,10 @@
-
-
-
-
+
-
+