From 9b4c22cb2d7ebde5ac7d2ac8b55c503a206c1e2f Mon Sep 17 00:00:00 2001 From: Alex Vanyo Date: Fri, 5 Apr 2024 10:40:12 -0700 Subject: [PATCH] Update to material3-adaptive alpha10 Change-Id: I810c36323a35c445c22dd3876c52df0360a5cb48 --- .../prodReleaseRuntimeClasspath.txt | 94 ++++++++++--------- .../InterestsListDetailScreen.kt | 79 +--------------- gradle/libs.versions.toml | 2 +- 3 files changed, 52 insertions(+), 123 deletions(-) diff --git a/app/dependencies/prodReleaseRuntimeClasspath.txt b/app/dependencies/prodReleaseRuntimeClasspath.txt index 33af141ce..7cd6df2d2 100644 --- a/app/dependencies/prodReleaseRuntimeClasspath.txt +++ b/app/dependencies/prodReleaseRuntimeClasspath.txt @@ -2,8 +2,8 @@ androidx.activity:activity-compose:1.8.0 androidx.activity:activity-ktx:1.8.0 androidx.activity:activity:1.8.0 androidx.annotation:annotation-experimental:1.4.0 -androidx.annotation:annotation-jvm:1.7.1 -androidx.annotation:annotation:1.7.1 +androidx.annotation:annotation-jvm:1.8.0-beta01 +androidx.annotation:annotation:1.8.0-beta01 androidx.appcompat:appcompat-resources:1.6.1 androidx.appcompat:appcompat:1.6.1 androidx.arch.core:core-common:2.2.0 @@ -13,20 +13,20 @@ androidx.browser:browser:1.8.0 androidx.collection:collection-jvm:1.4.0 androidx.collection:collection-ktx:1.4.0 androidx.collection:collection:1.4.0 -androidx.compose.animation:animation-android:1.6.3 -androidx.compose.animation:animation-core-android:1.6.3 -androidx.compose.animation:animation-core:1.6.3 -androidx.compose.animation:animation:1.6.3 +androidx.compose.animation:animation-android:1.7.0-alpha06 +androidx.compose.animation:animation-core-android:1.7.0-alpha06 +androidx.compose.animation:animation-core:1.7.0-alpha06 +androidx.compose.animation:animation:1.7.0-alpha06 androidx.compose.foundation:foundation-android:1.6.3 androidx.compose.foundation:foundation-layout-android:1.6.3 androidx.compose.foundation:foundation-layout:1.6.3 androidx.compose.foundation:foundation:1.6.3 -androidx.compose.material3.adaptive:adaptive-android:1.0.0-alpha08 -androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0-alpha08 -androidx.compose.material3.adaptive:adaptive-layout:1.0.0-alpha08 -androidx.compose.material3.adaptive:adaptive-navigation-android:1.0.0-alpha08 -androidx.compose.material3.adaptive:adaptive-navigation:1.0.0-alpha08 -androidx.compose.material3.adaptive:adaptive:1.0.0-alpha08 +androidx.compose.material3.adaptive:adaptive-android:1.0.0-alpha10 +androidx.compose.material3.adaptive:adaptive-layout-android:1.0.0-alpha10 +androidx.compose.material3.adaptive:adaptive-layout:1.0.0-alpha10 +androidx.compose.material3.adaptive:adaptive-navigation-android:1.0.0-alpha10 +androidx.compose.material3.adaptive:adaptive-navigation:1.0.0-alpha10 +androidx.compose.material3.adaptive:adaptive:1.0.0-alpha10 androidx.compose.material3:material3-android:1.2.1 androidx.compose.material3:material3-window-size-class-android:1.2.1 androidx.compose.material3:material3-window-size-class:1.2.1 @@ -37,25 +37,25 @@ androidx.compose.material:material-icons-extended-android:1.6.3 androidx.compose.material:material-icons-extended:1.6.3 androidx.compose.material:material-ripple-android:1.6.3 androidx.compose.material:material-ripple:1.6.3 -androidx.compose.runtime:runtime-android:1.6.3 -androidx.compose.runtime:runtime-saveable-android:1.6.3 -androidx.compose.runtime:runtime-saveable:1.6.3 +androidx.compose.runtime:runtime-android:1.7.0-alpha06 +androidx.compose.runtime:runtime-saveable-android:1.7.0-alpha06 +androidx.compose.runtime:runtime-saveable:1.7.0-alpha06 androidx.compose.runtime:runtime-tracing:1.0.0-beta01 -androidx.compose.runtime:runtime:1.6.3 -androidx.compose.ui:ui-android:1.6.3 -androidx.compose.ui:ui-geometry-android:1.6.3 -androidx.compose.ui:ui-geometry:1.6.3 -androidx.compose.ui:ui-graphics-android:1.6.3 -androidx.compose.ui:ui-graphics:1.6.3 -androidx.compose.ui:ui-text-android:1.6.3 -androidx.compose.ui:ui-text:1.6.3 -androidx.compose.ui:ui-tooling-preview-android:1.6.3 -androidx.compose.ui:ui-tooling-preview:1.6.3 -androidx.compose.ui:ui-unit-android:1.6.3 -androidx.compose.ui:ui-unit:1.6.3 -androidx.compose.ui:ui-util-android:1.6.3 -androidx.compose.ui:ui-util:1.6.3 -androidx.compose.ui:ui:1.6.3 +androidx.compose.runtime:runtime:1.7.0-alpha06 +androidx.compose.ui:ui-android:1.7.0-alpha06 +androidx.compose.ui:ui-geometry-android:1.7.0-alpha06 +androidx.compose.ui:ui-geometry:1.7.0-alpha06 +androidx.compose.ui:ui-graphics-android:1.7.0-alpha06 +androidx.compose.ui:ui-graphics:1.7.0-alpha06 +androidx.compose.ui:ui-text-android:1.7.0-alpha06 +androidx.compose.ui:ui-text:1.7.0-alpha06 +androidx.compose.ui:ui-tooling-preview-android:1.7.0-alpha06 +androidx.compose.ui:ui-tooling-preview:1.7.0-alpha06 +androidx.compose.ui:ui-unit-android:1.7.0-alpha06 +androidx.compose.ui:ui-unit:1.7.0-alpha06 +androidx.compose.ui:ui-util-android:1.7.0-alpha06 +androidx.compose.ui:ui-util:1.7.0-alpha06 +androidx.compose.ui:ui:1.7.0-alpha06 androidx.compose:compose-bom:2024.02.02 androidx.concurrent:concurrent-futures:1.1.0 androidx.core:core-ktx:1.12.0 @@ -74,26 +74,32 @@ androidx.emoji2:emoji2-views-helper:1.3.0 androidx.emoji2:emoji2:1.3.0 androidx.exifinterface:exifinterface:1.3.7 androidx.fragment:fragment:1.5.1 +androidx.graphics:graphics-path:1.0.0-beta02 androidx.hilt:hilt-common:1.1.0 androidx.hilt:hilt-navigation-compose:1.2.0 androidx.hilt:hilt-navigation:1.2.0 androidx.hilt:hilt-work:1.1.0 androidx.interpolator:interpolator:1.0.0 androidx.legacy:legacy-support-core-utils:1.0.0 -androidx.lifecycle:lifecycle-common-java8:2.7.0 -androidx.lifecycle:lifecycle-common:2.7.0 -androidx.lifecycle:lifecycle-livedata-core-ktx:2.7.0 -androidx.lifecycle:lifecycle-livedata-core:2.7.0 -androidx.lifecycle:lifecycle-livedata:2.7.0 -androidx.lifecycle:lifecycle-process:2.7.0 -androidx.lifecycle:lifecycle-runtime-compose:2.7.0 -androidx.lifecycle:lifecycle-runtime-ktx:2.7.0 -androidx.lifecycle:lifecycle-runtime:2.7.0 -androidx.lifecycle:lifecycle-service:2.7.0 -androidx.lifecycle:lifecycle-viewmodel-compose:2.7.0 -androidx.lifecycle:lifecycle-viewmodel-ktx:2.7.0 -androidx.lifecycle:lifecycle-viewmodel-savedstate:2.7.0 -androidx.lifecycle:lifecycle-viewmodel:2.7.0 +androidx.lifecycle:lifecycle-common-java8:2.8.0-alpha04 +androidx.lifecycle:lifecycle-common-jvm:2.8.0-alpha04 +androidx.lifecycle:lifecycle-common:2.8.0-alpha04 +androidx.lifecycle:lifecycle-livedata-core-ktx:2.8.0-alpha04 +androidx.lifecycle:lifecycle-livedata-core:2.8.0-alpha04 +androidx.lifecycle:lifecycle-livedata:2.8.0-alpha04 +androidx.lifecycle:lifecycle-process:2.8.0-alpha04 +androidx.lifecycle:lifecycle-runtime-android:2.8.0-alpha04 +androidx.lifecycle:lifecycle-runtime-compose:2.8.0-alpha04 +androidx.lifecycle:lifecycle-runtime-ktx-android:2.8.0-alpha04 +androidx.lifecycle:lifecycle-runtime-ktx:2.8.0-alpha04 +androidx.lifecycle:lifecycle-runtime:2.8.0-alpha04 +androidx.lifecycle:lifecycle-service:2.8.0-alpha04 +androidx.lifecycle:lifecycle-viewmodel-android:2.8.0-alpha04 +androidx.lifecycle:lifecycle-viewmodel-compose-android:2.8.0-alpha04 +androidx.lifecycle:lifecycle-viewmodel-compose:2.8.0-alpha04 +androidx.lifecycle:lifecycle-viewmodel-ktx:2.8.0-alpha04 +androidx.lifecycle:lifecycle-viewmodel-savedstate:2.8.0-alpha04 +androidx.lifecycle:lifecycle-viewmodel:2.8.0-alpha04 androidx.loader:loader:1.0.0 androidx.localbroadcastmanager:localbroadcastmanager:1.0.0 androidx.metrics:metrics-performance:1.0.0-alpha04 diff --git a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt index a6c2edcf7..4cc4345ef 100644 --- a/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt +++ b/app/src/main/kotlin/com/google/samples/apps/nowinandroid/ui/interests2pane/InterestsListDetailScreen.kt @@ -17,29 +17,15 @@ package com.google.samples.apps.nowinandroid.ui.interests2pane import androidx.activity.compose.BackHandler -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.WindowInsets import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi -import androidx.compose.material3.adaptive.Posture -import androidx.compose.material3.adaptive.WindowAdaptiveInfo -import androidx.compose.material3.adaptive.allVerticalHingeBounds -import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo -import androidx.compose.material3.adaptive.layout.HingePolicy import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffold import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffoldRole import androidx.compose.material3.adaptive.layout.PaneAdaptedValue -import androidx.compose.material3.adaptive.layout.PaneScaffoldDirective -import androidx.compose.material3.adaptive.layout.calculateStandardPaneScaffoldDirective import androidx.compose.material3.adaptive.navigation.ThreePaneScaffoldNavigator import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator -import androidx.compose.material3.adaptive.occludingVerticalHingeBounds -import androidx.compose.material3.adaptive.separatingVerticalHingeBounds import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.ui.geometry.Rect -import androidx.compose.ui.unit.Dp -import androidx.compose.ui.unit.dp import androidx.hilt.navigation.compose.hiltViewModel import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.navigation.NavGraphBuilder @@ -48,7 +34,6 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import androidx.navigation.navArgument -import androidx.window.core.layout.WindowWidthSizeClass import com.google.samples.apps.nowinandroid.feature.interests.InterestsRoute import com.google.samples.apps.nowinandroid.feature.interests.navigation.INTERESTS_ROUTE import com.google.samples.apps.nowinandroid.feature.interests.navigation.TOPIC_ID_ARG @@ -91,12 +76,7 @@ internal fun InterestsListDetailScreen( selectedTopicId: String?, onTopicClick: (String) -> Unit, ) { - val scaffoldDirective = calculateNoContentPaddingScaffoldDirective( - currentWindowAdaptiveInfo(), - ) - val listDetailNavigator = rememberListDetailPaneScaffoldNavigator( - scaffoldDirective = scaffoldDirective, - ) + val listDetailNavigator = rememberListDetailPaneScaffoldNavigator() BackHandler(listDetailNavigator.canNavigateBack()) { listDetailNavigator.navigateBack() } @@ -136,7 +116,6 @@ internal fun InterestsListDetailScreen( } } }, - windowInsets = WindowInsets(0, 0, 0, 0), ) LaunchedEffect(Unit) { if (selectedTopicId != null) { @@ -153,59 +132,3 @@ private fun ThreePaneScaffoldNavigator.isListPaneVisible(): Boolean = @OptIn(ExperimentalMaterial3AdaptiveApi::class) private fun ThreePaneScaffoldNavigator.isDetailPaneVisible(): Boolean = scaffoldValue[ListDetailPaneScaffoldRole.Detail] == PaneAdaptedValue.Expanded - -/** - * This is a direct clone of [calculateStandardPaneScaffoldDirective] with the only change of - * passing 0 content padding to the panes. - */ -@OptIn(ExperimentalMaterial3AdaptiveApi::class) -private fun calculateNoContentPaddingScaffoldDirective( - windowAdaptiveInfo: WindowAdaptiveInfo, - verticalHingePolicy: HingePolicy = HingePolicy.AvoidSeparating, -): PaneScaffoldDirective { - val maxHorizontalPartitions: Int - val verticalSpacerSize: Dp - when (windowAdaptiveInfo.windowSizeClass.windowWidthSizeClass) { - WindowWidthSizeClass.COMPACT -> { - maxHorizontalPartitions = 1 - verticalSpacerSize = 0.dp - } - WindowWidthSizeClass.MEDIUM -> { - maxHorizontalPartitions = 1 - verticalSpacerSize = 0.dp - } - else -> { - maxHorizontalPartitions = 2 - verticalSpacerSize = 24.dp - } - } - val maxVerticalPartitions: Int - val horizontalSpacerSize: Dp - - if (windowAdaptiveInfo.windowPosture.isTabletop) { - maxVerticalPartitions = 2 - horizontalSpacerSize = 24.dp - } else { - maxVerticalPartitions = 1 - horizontalSpacerSize = 0.dp - } - - return PaneScaffoldDirective( - PaddingValues(0.dp), - maxHorizontalPartitions, - verticalSpacerSize, - maxVerticalPartitions, - horizontalSpacerSize, - getExcludedVerticalBounds(windowAdaptiveInfo.windowPosture, verticalHingePolicy), - ) -} - -@OptIn(ExperimentalMaterial3AdaptiveApi::class) -private fun getExcludedVerticalBounds(posture: Posture, hingePolicy: HingePolicy): List { - return when (hingePolicy) { - HingePolicy.AvoidSeparating -> posture.separatingVerticalHingeBounds - HingePolicy.AvoidOccluding -> posture.occludingVerticalHingeBounds - HingePolicy.AlwaysAvoid -> posture.allVerticalHingeBounds - else -> emptyList() - } -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d3ea109ef..0aff27c8c 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -9,7 +9,7 @@ androidxAppCompat = "1.6.1" androidxBrowser = "1.8.0" androidxComposeBom = "2024.02.02" androidxComposeCompiler = "1.5.8" -androidxComposeMaterial3Adaptive = "1.0.0-alpha08" +androidxComposeMaterial3Adaptive = "1.0.0-alpha10" androidxComposeRuntimeTracing = "1.0.0-beta01" androidxCore = "1.12.0" androidxCoreSplashscreen = "1.0.1"