diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 6b3e3f18aa..effb25eb64 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -57,6 +57,7 @@ android:name=".MainActivity" android:exported="true" android:launchMode="singleTask" + android:resizeableActivity="true" android:theme="@style/Theme.Metrolist" android:windowSoftInputMode="adjustResize"> diff --git a/app/src/main/kotlin/com/metrolist/music/MainActivity.kt b/app/src/main/kotlin/com/metrolist/music/MainActivity.kt index 70948148b7..6837f49d71 100644 --- a/app/src/main/kotlin/com/metrolist/music/MainActivity.kt +++ b/app/src/main/kotlin/com/metrolist/music/MainActivity.kt @@ -85,6 +85,7 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.graphicsLayer import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.input.nestedscroll.nestedScroll +import androidx.compose.ui.platform.LocalConfiguration import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.platform.LocalFocusManager import androidx.compose.ui.platform.LocalWindowInfo @@ -92,6 +93,7 @@ import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.TextRange import androidx.compose.ui.text.input.TextFieldValue +import androidx.compose.ui.unit.Density import androidx.compose.ui.unit.dp import androidx.compose.ui.util.fastAny import androidx.compose.ui.window.Dialog @@ -641,6 +643,26 @@ class MainActivity : ComponentActivity() { pureBlack = pureBlack, themeColor = themeColor, ) { + val currentDensity = LocalDensity.current + val windowInfo = LocalWindowInfo.current + val containerWidthDp = windowInfo.containerDpSize.width + + val densityScale = remember(containerWidthDp) { + when { + containerWidthDp >= 840.dp -> 1.25f + containerWidthDp >= 720.dp -> 1.15f + containerWidthDp >= 600.dp -> 1.1f + else -> 1.0f + } + } + val scaledDensity: Density = remember(currentDensity, densityScale) { + Density( + density = currentDensity.density * densityScale, + fontScale = currentDensity.fontScale, + ) + } + + CompositionLocalProvider(LocalDensity provides scaledDensity) { BoxWithConstraints( modifier = Modifier @@ -756,8 +778,9 @@ class MainActivity : ComponentActivity() { } val isLandscape = configuration.containerDpSize.width > configuration.containerDpSize.height + val isTablet = configuration.containerDpSize.width >= 600.dp - val showRail = isLandscape && !inSearchScreen + val showRail = (isLandscape || isTablet) && !inSearchScreen val navPadding = if (shouldShowNavigationBar && !showRail) { @@ -1367,6 +1390,7 @@ class MainActivity : ComponentActivity() { } } } + } } }