mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-27 23:36:47 +00:00
Improve jetpack compose edge-to-edge handling
This commit is contained in:
@@ -7,6 +7,7 @@ import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.os.ResultReceiver
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.activity.result.ActivityResult
|
||||
import androidx.activity.result.contract.ActivityResultContracts
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
@@ -37,14 +38,14 @@ class BlankActivity : AppCompatActivity() {
|
||||
@OptIn(ExperimentalMaterial3Api::class)
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
enableEdgeToEdge()
|
||||
if (!intent.hasExtra("dialogTitle")) {
|
||||
startTargetActivity()
|
||||
return
|
||||
}
|
||||
setContent {
|
||||
EdgeToEdge()
|
||||
|
||||
LawnchairTheme {
|
||||
EdgeToEdge()
|
||||
Surface(
|
||||
modifier = Modifier.fillMaxSize(),
|
||||
color = BottomSheetDefaults.ScrimColor,
|
||||
|
||||
@@ -20,6 +20,7 @@ import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import androidx.activity.compose.setContent
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
|
||||
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
|
||||
@@ -31,11 +32,11 @@ class PreferenceActivity : AppCompatActivity() {
|
||||
@OptIn(ExperimentalMaterial3WindowSizeClassApi::class)
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
enableEdgeToEdge()
|
||||
setContent {
|
||||
EdgeToEdge()
|
||||
|
||||
val windowSizeClass = calculateWindowSizeClass(this)
|
||||
LawnchairTheme {
|
||||
EdgeToEdge()
|
||||
Preferences(
|
||||
windowSizeClass,
|
||||
)
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package app.lawnchair.ui.theme
|
||||
|
||||
import android.graphics.Color
|
||||
import android.view.WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS
|
||||
import androidx.activity.ComponentActivity
|
||||
import androidx.activity.SystemBarStyle
|
||||
import androidx.activity.enableEdgeToEdge
|
||||
@@ -31,13 +30,14 @@ import androidx.compose.runtime.getValue
|
||||
import androidx.compose.runtime.mutableStateOf
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.runtime.setValue
|
||||
import androidx.compose.ui.graphics.toArgb
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import app.lawnchair.preferences.observeAsState
|
||||
import app.lawnchair.preferences.preferenceManager
|
||||
import app.lawnchair.preferences2.asState
|
||||
import app.lawnchair.preferences2.preferenceManager2
|
||||
import app.lawnchair.theme.ThemeProvider
|
||||
import app.lawnchair.theme.toM3ColorScheme
|
||||
import app.lawnchair.theme.toComposeColorScheme
|
||||
import app.lawnchair.ui.preferences.components.ThemeChoice
|
||||
import app.lawnchair.wallpaper.WallpaperManagerCompat
|
||||
import com.android.launcher3.Utilities
|
||||
@@ -59,20 +59,26 @@ fun LawnchairTheme(
|
||||
@Composable
|
||||
fun ComponentActivity.EdgeToEdge() {
|
||||
val darkTheme = isSelectedThemeDark
|
||||
val scrimColor = MaterialTheme.colorScheme.background.copy(alpha = 0.95f).toArgb()
|
||||
val contentColor = MaterialTheme.colorScheme.onBackground.toArgb()
|
||||
|
||||
LaunchedEffect(darkTheme) {
|
||||
val barStyle = SystemBarStyle.auto(
|
||||
val statusBarStyle = SystemBarStyle.auto(
|
||||
Color.TRANSPARENT,
|
||||
Color.TRANSPARENT,
|
||||
detectDarkMode = { darkTheme },
|
||||
)
|
||||
enableEdgeToEdge(
|
||||
statusBarStyle = barStyle,
|
||||
navigationBarStyle = barStyle,
|
||||
)
|
||||
|
||||
// Fix for three-button nav not properly going edge-to-edge.
|
||||
// TODO: https://issuetracker.google.com/issues/298296168
|
||||
window.setFlags(FLAG_LAYOUT_NO_LIMITS, FLAG_LAYOUT_NO_LIMITS)
|
||||
val navigationBarStyle = if (!darkTheme) {
|
||||
SystemBarStyle.light(scrimColor, contentColor)
|
||||
} else {
|
||||
SystemBarStyle.dark(scrimColor)
|
||||
}
|
||||
|
||||
enableEdgeToEdge(
|
||||
statusBarStyle = statusBarStyle,
|
||||
navigationBarStyle = navigationBarStyle,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,7 +93,7 @@ fun getColorScheme(darkTheme: Boolean): ColorScheme {
|
||||
ThemeProvider.INSTANCE.get(context).colorScheme
|
||||
}
|
||||
|
||||
return colorScheme.toM3ColorScheme(isDark = darkTheme)
|
||||
return colorScheme.toComposeColorScheme(isDark = darkTheme)
|
||||
}
|
||||
|
||||
val isSelectedThemeDark: Boolean
|
||||
|
||||
Reference in New Issue
Block a user