Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update to Compose beta release #456

Draft
wants to merge 2 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -35,21 +35,24 @@ import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffold
import androidx.compose.material3.adaptive.layout.ListDetailPaneScaffoldRole
import androidx.compose.material3.adaptive.navigation.rememberListDetailPaneScaffoldNavigator
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.compose.ui.unit.sp
import kotlinx.coroutines.launch
import kotlinx.parcelize.Parcelize

@OptIn(ExperimentalMaterial3AdaptiveApi::class)
@Composable
fun SampleListDetailPaneScaffoldParts() {
// [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part02]
val navigator = rememberListDetailPaneScaffoldNavigator<MyItem>()
val scope = rememberCoroutineScope()

BackHandler(navigator.canNavigateBack()) {
navigator.navigateBack()
scope.launch { navigator.navigateBack() }
}
// [END android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_part02]

Expand All @@ -73,7 +76,9 @@ fun SampleListDetailPaneScaffoldParts() {
MyList(
onItemClick = { item ->
// Navigate to the detail pane with the passed item
navigator.navigateTo(ListDetailPaneScaffoldRole.Detail, item)
scope.launch {
navigator.navigateTo(ListDetailPaneScaffoldRole.Detail, item)
}
}
)
}
Expand All @@ -94,7 +99,7 @@ fun SampleListDetailPaneScaffoldParts() {
// [END_EXCLUDE]
detailPane = {
AnimatedPane {
navigator.currentDestination?.content?.let {
navigator.currentDestination?.contentKey?.let {
MyDetails(it)
}
}
Expand All @@ -109,9 +114,10 @@ fun SampleListDetailPaneScaffoldParts() {
fun SampleListDetailPaneScaffoldFull() {
// [START android_compose_adaptivelayouts_sample_list_detail_pane_scaffold_full]
val navigator = rememberListDetailPaneScaffoldNavigator<MyItem>()
val scope = rememberCoroutineScope()

BackHandler(navigator.canNavigateBack()) {
navigator.navigateBack()
scope.launch { navigator.navigateBack() }
}

ListDetailPaneScaffold(
Expand All @@ -122,15 +128,17 @@ fun SampleListDetailPaneScaffoldFull() {
MyList(
onItemClick = { item ->
// Navigate to the detail pane with the passed item
navigator.navigateTo(ListDetailPaneScaffoldRole.Detail, item)
scope.launch {
navigator.navigateTo(ListDetailPaneScaffoldRole.Detail, item)
}
},
)
}
},
detailPane = {
AnimatedPane {
// Show the detail pane content if selected item is available
navigator.currentDestination?.content?.let {
navigator.currentDestination?.contentKey?.let {
MyDetails(it)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,15 +32,20 @@ import androidx.compose.material3.adaptive.layout.ThreePaneScaffoldRole
import androidx.compose.material3.adaptive.layout.ThreePaneScaffoldScope
import androidx.compose.material3.adaptive.navigation.rememberSupportingPaneScaffoldNavigator
import androidx.compose.runtime.Composable
import androidx.compose.runtime.rememberCoroutineScope
import androidx.compose.ui.Modifier
import androidx.compose.ui.tooling.preview.Preview
import kotlinx.coroutines.launch

@Preview
@Composable
fun SampleSupportingPaneScaffoldParts() {
// [START android_compose_adaptivelayouts_sample_supporting_pane_scaffold_nav_and_back]
val navigator = rememberSupportingPaneScaffoldNavigator()
val scope = rememberCoroutineScope()

BackHandler(navigator.canNavigateBack()) {
navigator.navigateBack()
scope.launch { navigator.navigateBack() }
}
// [END android_compose_adaptivelayouts_sample_supporting_pane_scaffold_nav_and_back]

Expand All @@ -54,13 +59,15 @@ fun SampleSupportingPaneScaffoldParts() {
// [END android_compose_adaptivelayouts_sample_supporting_pane_scaffold_params]
}

@Preview
@Composable
fun SampleSupportingPaneScaffoldFull() {
// [START android_compose_adaptivelayouts_sample_supporting_pane_scaffold_full]
val navigator = rememberSupportingPaneScaffoldNavigator()
val scope = rememberCoroutineScope()

BackHandler(navigator.canNavigateBack()) {
navigator.navigateBack()
scope.launch { navigator.navigateBack() }
}

SupportingPaneScaffold(
Expand All @@ -73,7 +80,9 @@ fun SampleSupportingPaneScaffoldFull() {
Button(
modifier = Modifier.wrapContentSize(),
onClick = {
navigator.navigateTo(SupportingPaneScaffoldRole.Supporting)
scope.launch {
navigator.navigateTo(SupportingPaneScaffoldRole.Supporting)
}
}
) {
Text("Show supporting pane")
Expand All @@ -100,36 +109,30 @@ fun ThreePaneScaffoldScope.MainPane(
onNavigateToSupportingPane: () -> Unit,
modifier: Modifier = Modifier,
) {
AnimatedPane(modifier = modifier.safeContentPadding()) {
// Main pane content
if (shouldShowSupportingPaneButton) {
Button(onClick = onNavigateToSupportingPane) {
Text("Show supporting pane")
}
} else {
Text("Supporting pane is shown")
}
}
MainPane(
modifier = modifier.safeContentPadding(),
shouldShowSupportingPaneButton = shouldShowSupportingPaneButton,
onNavigateToSupportingPane = onNavigateToSupportingPane
)
}

@Composable
fun ThreePaneScaffoldScope.SupportingPane(
modifier: Modifier = Modifier,
) {
AnimatedPane(modifier = modifier.safeContentPadding()) {
// Supporting pane content
Text("This is the supporting pane")
}
SupportingPane(modifier = modifier.safeContentPadding())
}
// [END android_compose_adaptivelayouts_sample_supporting_pane_scaffold_extracted_panes]

@Preview
@Composable
fun SampleSupportingPaneScaffoldSimplified() {
// [START android_compose_adaptivelayouts_sample_supporting_pane_scaffold_simplified]
val navigator = rememberSupportingPaneScaffoldNavigator()
val scope = rememberCoroutineScope()

BackHandler(navigator.canNavigateBack()) {
navigator.navigateBack()
scope.launch { navigator.navigateBack() }
}

SupportingPaneScaffold(
Expand All @@ -138,7 +141,9 @@ fun SampleSupportingPaneScaffoldSimplified() {
mainPane = {
MainPane(
shouldShowSupportingPaneButton = navigator.scaffoldValue.secondary == PaneAdaptedValue.Hidden,
onNavigateToSupportingPane = { navigator.navigateTo(ThreePaneScaffoldRole.Secondary) }
onNavigateToSupportingPane = {
scope.launch { navigator.navigateTo(ThreePaneScaffoldRole.Secondary) }
}
)
},
supportingPane = { SupportingPane() },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ fun SharedTransitionScope.SnackItem(
SnackContents(
snack = snack,
modifier = Modifier.sharedElement(
state = rememberSharedContentState(key = snack.name),
sharedContentState = rememberSharedContentState(key = snack.name),
animatedVisibilityScope = this@AnimatedVisibility,
boundsTransform = boundsTransition,
),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ private fun AnimatedVisibilitySharedElementShortenedExample() {
SnackContents(
snack = snack,
modifier = Modifier.sharedElement(
state = rememberSharedContentState(key = snack.name),
sharedContentState = rememberSharedContentState(key = snack.name),
animatedVisibilityScope = this@AnimatedVisibility
),
onClick = {
Expand Down Expand Up @@ -175,7 +175,7 @@ fun SharedTransitionScope.SnackEditDetails(
SnackContents(
snack = targetSnack,
modifier = Modifier.sharedElement(
state = rememberSharedContentState(key = targetSnack.name),
sharedContentState = rememberSharedContentState(key = targetSnack.name),
animatedVisibilityScope = this@AnimatedContent,
),
onClick = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import androidx.annotation.RequiresApi
import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.draganddrop.dragAndDropSource
import androidx.compose.foundation.draganddrop.dragAndDropTarget
import androidx.compose.foundation.gestures.detectTapGestures
import androidx.compose.runtime.Composable
import androidx.compose.runtime.remember
import androidx.compose.ui.Modifier
Expand All @@ -41,39 +40,39 @@ private fun DragAndDropSnippet() {
val url = ""

// [START android_compose_drag_and_drop_1]
Modifier.dragAndDropSource {
detectTapGestures(onLongPress = {
// Transfer data here.
})
Modifier.dragAndDropSource { _ ->
// Transfer data here.
DragAndDropTransferData(ClipData.newPlainText("image Url", url))
}
// [END android_compose_drag_and_drop_1]

// [START android_compose_drag_and_drop_2]
Modifier.dragAndDropSource {
detectTapGestures(onLongPress = {
startTransfer(
DragAndDropTransferData(
ClipData.newPlainText(
"image Url", url
)
)
Modifier.dragAndDropSource { _ ->

// detectTapGestures(onLongPress = {
// startTransfer(
DragAndDropTransferData(
ClipData.newPlainText(
"image Url", url
)
})
)
// )
// })
}
// [END android_compose_drag_and_drop_2]

// [START android_compose_drag_and_drop_3]
Modifier.dragAndDropSource {
detectTapGestures(onLongPress = {
startTransfer(
DragAndDropTransferData(
ClipData.newPlainText(
"image Url", url
),
flags = View.DRAG_FLAG_GLOBAL
)
)
})
Modifier.dragAndDropSource { _ ->
// detectTapGestures(onLongPress = {
// startTransfer(
DragAndDropTransferData(
ClipData.newPlainText(
"image Url", url
),
flags = View.DRAG_FLAG_GLOBAL
)
// )
// })
}
// [END android_compose_drag_and_drop_3]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,13 +30,14 @@ import androidx.compose.foundation.interaction.PressInteraction
import androidx.compose.foundation.layout.Box
import androidx.compose.material.ExperimentalMaterialApi
import androidx.compose.material.LocalRippleConfiguration
import androidx.compose.material.LocalUseFallbackRippleImplementation
import androidx.compose.material.RippleConfiguration
import androidx.compose.material.ripple
import androidx.compose.material.ripple.LocalRippleTheme
import androidx.compose.material.ripple.RippleAlpha
import androidx.compose.material.ripple.RippleTheme
import androidx.compose.material.ripple.rememberRipple
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.LocalUseFallbackRippleImplementation
import androidx.compose.material3.MaterialTheme
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
Expand Down Expand Up @@ -239,7 +240,7 @@ private class ScaleIndicationNode(
fun App() {
}

@OptIn(ExperimentalMaterialApi::class)
@OptIn(ExperimentalMaterial3Api::class)
@Composable
private fun LocalUseFallbackRippleImplementationExample() {
// [START android_compose_userinteractions_localusefallbackrippleimplementation]
Expand All @@ -252,7 +253,7 @@ private fun LocalUseFallbackRippleImplementationExample() {
}

// [START android_compose_userinteractions_localusefallbackrippleimplementation_app_theme]
@OptIn(ExperimentalMaterialApi::class)
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun MyAppTheme(content: @Composable () -> Unit) {
CompositionLocalProvider(LocalUseFallbackRippleImplementation provides true) {
Expand Down
19 changes: 9 additions & 10 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -18,13 +18,12 @@ androidx-navigation = "2.8.6"
androidx-paging = "3.3.5"
androidx-test = "1.6.1"
androidx-test-espresso = "3.6.1"
androidx-window = "1.4.0-beta01"
androidx-window = "1.4.0-beta02"
androidxHiltNavigationCompose = "1.2.0"
coil = "2.7.0"
# @keep
compileSdk = "35"
compose-latest = "1.7.7"
composeUiTooling = "1.4.0"
composeUiTooling = "1.4.1"
coreSplashscreen = "1.0.1"
coroutines = "1.10.1"
glide = "1.0.0-beta01"
Expand Down Expand Up @@ -64,21 +63,21 @@ accompanist-theme-adapter-material = { module = "com.google.accompanist:accompan
accompanist-theme-adapter-material3 = { module = "com.google.accompanist:accompanist-themeadapter-material3", version.ref = "accompanist" }
androidx-activity-compose = { module = "androidx.activity:activity-compose", version.ref = "androidx-activity-compose" }
androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" }
androidx-compose-animation-graphics = { module = "androidx.compose.animation:animation-graphics", version.ref = "compose-latest" }
androidx-compose-bom = { module = "androidx.compose:compose-bom", version.ref = "androidx-compose-bom" }
androidx-compose-foundation = { module = "androidx.compose.foundation:foundation", version.ref = "compose-latest" }
androidx-compose-foundation-layout = { module = "androidx.compose.foundation:foundation-layout", version.ref = "compose-latest" }
androidx-compose-material = { module = "androidx.compose.material:material", version.ref = "compose-latest" }
androidx-compose-animation-graphics = { module = "androidx.compose.animation:animation-graphics" }
androidx-compose-bom = { module = "androidx.compose:compose-bom-beta", version.ref = "androidx-compose-bom" }
androidx-compose-foundation = { module = "androidx.compose.foundation:foundation" }
androidx-compose-foundation-layout = { module = "androidx.compose.foundation:foundation-layout" }
androidx-compose-material = { module = "androidx.compose.material:material" }
androidx-compose-material-iconsExtended = { module = "androidx.compose.material:material-icons-extended" }
androidx-compose-material-ripple = { module = "androidx.compose.material:material-ripple", version.ref = "compose-latest" }
androidx-compose-material-ripple = { module = "androidx.compose.material:material-ripple" }
androidx-compose-material3 = { module = "androidx.compose.material3:material3" }
androidx-compose-material3-adaptive = { module = "androidx.compose.material3.adaptive:adaptive", version.ref = "material3-adaptive" }
androidx-compose-material3-adaptive-layout = { module = "androidx.compose.material3.adaptive:adaptive-layout", version.ref = "material3-adaptive" }
androidx-compose-material3-adaptive-navigation = { module = "androidx.compose.material3.adaptive:adaptive-navigation", version.ref = "material3-adaptive" }
androidx-compose-material3-adaptive-navigation-suite = { module = "androidx.compose.material3:material3-adaptive-navigation-suite", version.ref = "material3-adaptive-navigation-suite" }
androidx-compose-runtime = { module = "androidx.compose.runtime:runtime" }
androidx-compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" }
androidx-compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compose-latest" }
androidx-compose-ui = { module = "androidx.compose.ui:ui" }
androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" }
androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" }
androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" }
Expand Down