From 18e7db808a4c707e659c3f999caf9c6dfff1c926 Mon Sep 17 00:00:00 2001 From: dotmg Date: Tue, 8 Jul 2025 14:43:10 +0200 Subject: [PATCH] HideStatusBar --- .../kotlin/mg/dot/feufaro/MainActivity.kt | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/MainActivity.kt b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/MainActivity.kt index 5e7ec2c..57b0fb2 100644 --- a/composeApp/src/androidMain/kotlin/mg/dot/feufaro/MainActivity.kt +++ b/composeApp/src/androidMain/kotlin/mg/dot/feufaro/MainActivity.kt @@ -7,17 +7,53 @@ import androidx.activity.enableEdgeToEdge import androidx.compose.runtime.Composable import androidx.compose.ui.tooling.preview.Preview import org.koin.androidx.compose.koinViewModel +import androidx.core.view.WindowCompat +import android.view.WindowManager +import androidx.core.view.WindowInsetsCompat +import androidx.core.view.WindowInsetsControllerCompat class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { enableEdgeToEdge() super.onCreate(savedInstanceState) + WindowCompat.setDecorFitsSystemWindows(window, false) + hideSystemBar() + setContent { val sharedViewModel: SharedViewModel = koinViewModel() App(sharedViewModel = sharedViewModel) } } + private fun hideSystemBar() { + // Pour les versions d'Android plus récentes (API 30+) + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) { + val windowInsetsController = WindowCompat.getInsetsController(window, window.decorView) + + // Cacher les barres système + windowInsetsController.hide(WindowInsetsCompat.Type.systemBars()) + + // Définir le comportement des barres système pour le mode immersif + // BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE: Les barres apparaissent temporairement + // après un balayage et disparaissent ensuite. C'est le comportement le plus courant + // pour le mode immersif. + windowInsetsController.systemBarsBehavior = WindowInsetsControllerCompat.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE + } else { + // Pour les versions d'Android plus anciennes (API < 30) + @Suppress("DEPRECATION") + window.decorView.systemUiVisibility = ( + android.view.View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY // Rend le mode immersif "collant" + or android.view.View.SYSTEM_UI_FLAG_FULLSCREEN // Cache la barre d'état + or android.view.View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // Cache la barre de navigation + or android.view.View.SYSTEM_UI_FLAG_LAYOUT_STABLE + or android.view.View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION + or android.view.View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + ) + // Utiliser FLAG_LAYOUT_NO_LIMITS pour s'assurer que le contenu s'étend derrière la barre de navigation si elle réapparaît temporairement + @Suppress("DEPRECATION") + window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS) + } + } } @Preview