From d71778c8b6730fcdff2b5904ab4462aa01eb0278 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Wed, 24 Jan 2024 11:55:45 -0800 Subject: [PATCH 01/59] Add snippets for Indication and Ripple migration (#191) * Add ripple snippets. * Add new ripple APIs. * Add snippets for interactions. * Added more ripple snippets. * Update foundation and material to 1.7.0-alpha01 * Fix snippet tag. * Apply Spotless --------- Co-authored-by: arriolac --- compose/snippets/build.gradle.kts | 1 + .../designsystems/Material2Snippets.kt | 2 +- .../compose/snippets/layouts/PagerSnippets.kt | 2 +- .../snippets/touchinput/Interactions.kt | 661 ++++++++++++++++++ .../touchinput/focus/FocusSnippets.kt | 2 + .../userinteractions/UserInteractions.kt | 146 ++++ gradle/libs.versions.toml | 9 +- 7 files changed, 817 insertions(+), 6 deletions(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/touchinput/Interactions.kt diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index bb729778f..31f953b8d 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -82,6 +82,7 @@ dependencies { implementation(composeBom) androidTestImplementation(composeBom) + implementation(libs.androidx.compose.foundation) implementation(libs.androidx.compose.ui) implementation(libs.androidx.compose.ui.util) implementation(libs.androidx.compose.ui.graphics) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material2Snippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material2Snippets.kt index f70cd4155..540af22e3 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material2Snippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material2Snippets.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -@file:Suppress("unused") +@file:Suppress("unused", "DEPRECATION_ERROR") package com.example.compose.snippets.designsystems diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt index f65c96e6d..bc73afb1d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt @@ -426,7 +426,7 @@ private fun CustomSnapDistance() { HorizontalPager( state = pagerState, pageSize = PageSize.Fixed(200.dp), - beyondBoundsPageCount = 10, + outOfBoundsPageCount = 10, flingBehavior = fling ) { PagerSampleItem(page = it) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/Interactions.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/Interactions.kt new file mode 100644 index 000000000..0d6700602 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/Interactions.kt @@ -0,0 +1,661 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.touchinput + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.core.Animatable +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.spring +import androidx.compose.animation.core.tween +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.IndicationNodeFactory +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.focusable +import androidx.compose.foundation.hoverable +import androidx.compose.foundation.interaction.DragInteraction +import androidx.compose.foundation.interaction.Interaction +import androidx.compose.foundation.interaction.InteractionSource +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.interaction.PressInteraction +import androidx.compose.foundation.interaction.collectIsPressedAsState +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.RowScope +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.defaultMinSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.ShoppingCart +import androidx.compose.material.ripple +import androidx.compose.material3.Button +import androidx.compose.material3.ButtonColors +import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ButtonElevation +import androidx.compose.material3.Icon +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateListOf +import androidx.compose.runtime.remember +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.scale +import androidx.compose.ui.geometry.Offset +import androidx.compose.ui.geometry.Size +import androidx.compose.ui.geometry.center +import androidx.compose.ui.graphics.Brush +import androidx.compose.ui.graphics.Brush.Companion.linearGradient +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.graphics.SolidColor +import androidx.compose.ui.graphics.drawOutline +import androidx.compose.ui.graphics.drawscope.ContentDrawScope +import androidx.compose.ui.graphics.drawscope.Stroke +import androidx.compose.ui.graphics.drawscope.scale +import androidx.compose.ui.node.DelegatableNode +import androidx.compose.ui.node.DrawModifierNode +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp +import kotlin.math.abs +import kotlin.math.sign +import kotlinx.coroutines.Job +import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch + +@Composable +private fun InteractionsSnippet1() { + // [START android_compose_interactions_interaction_state] + val interactionSource = remember { MutableInteractionSource() } + val isPressed by interactionSource.collectIsPressedAsState() + + Button( + onClick = { /* do something */ }, + interactionSource = interactionSource + ) { + Text(if (isPressed) "Pressed!" else "Not pressed") + } + // [END android_compose_interactions_interaction_state] +} + +// [START android_compose_interactions_interaction_source_input] +fun Modifier.focusBorder(interactionSource: InteractionSource): Modifier { + // [START_EXCLUDE] + return this + // [END_EXCLUDE] +} +// [END android_compose_interactions_interaction_source_input] + +// [START android_compose_interactions_mutable_interaction_source_input] +fun Modifier.hover(interactionSource: MutableInteractionSource, enabled: Boolean): Modifier { + // [START_EXCLUDE] + return this + // [END_EXCLUDE] +} +// [END android_compose_interactions_mutable_interaction_source_input] + +// [START android_compose_interactions_high_level_component] +@Composable +fun Button( + onClick: () -> Unit, + modifier: Modifier = Modifier, + enabled: Boolean = true, + + // exposes MutableInteractionSource as a parameter + interactionSource: MutableInteractionSource? = null, + + elevation: ButtonElevation? = ButtonDefaults.elevatedButtonElevation(), + shape: Shape = MaterialTheme.shapes.small, + border: BorderStroke? = null, + colors: ButtonColors = ButtonDefaults.buttonColors(), + contentPadding: PaddingValues = ButtonDefaults.ContentPadding, + content: @Composable RowScope.() -> Unit +) { /* content() */ } +// [END android_compose_interactions_high_level_component] + +@Composable +fun HoverExample() { + // [START android_compose_interactions_hoverable] + // This InteractionSource will emit hover interactions + val interactionSource = remember { MutableInteractionSource() } + + Box( + Modifier + .size(100.dp) + .hoverable(interactionSource = interactionSource), + contentAlignment = Alignment.Center + ) { + Text("Hello!") + } + // [END android_compose_interactions_hoverable] +} + +@Composable +fun FocusableExample() { + // [START android_compose_interactions_focusable] + // This InteractionSource will emit hover and focus interactions + val interactionSource = remember { MutableInteractionSource() } + + Box( + Modifier + .size(100.dp) + .hoverable(interactionSource = interactionSource) + .focusable(interactionSource = interactionSource), + contentAlignment = Alignment.Center + ) { + Text("Hello!") + } + // [END android_compose_interactions_focusable] +} + +@Composable +fun ClickableExample() { + // [START android_compose_interactions_clickable] + // This InteractionSource will emit hover, focus, and press interactions + val interactionSource = remember { MutableInteractionSource() } + Box( + Modifier + .size(100.dp) + .clickable( + onClick = {}, + interactionSource = interactionSource, + + // Also show a ripple effect + indication = ripple() + ), + contentAlignment = Alignment.Center + ) { + Text("Hello!") + } + // [END android_compose_interactions_clickable] +} + +@Composable +private fun InteractionsSnippet2() { + // [START android_compose_interactions_flow_apis] + val interactionSource = remember { MutableInteractionSource() } + val interactions = remember { mutableStateListOf() } + + LaunchedEffect(interactionSource) { + interactionSource.interactions.collect { interaction -> + when (interaction) { + is PressInteraction.Press -> { + interactions.add(interaction) + } + is DragInteraction.Start -> { + interactions.add(interaction) + } + } + } + } + // [END android_compose_interactions_flow_apis] +} + +@Composable +private fun InteractionsSnippet3() { + // [START android_compose_interactions_add_remove] + val interactionSource = remember { MutableInteractionSource() } + val interactions = remember { mutableStateListOf() } + + LaunchedEffect(interactionSource) { + interactionSource.interactions.collect { interaction -> + when (interaction) { + is PressInteraction.Press -> { + interactions.add(interaction) + } + is PressInteraction.Release -> { + interactions.remove(interaction.press) + } + is PressInteraction.Cancel -> { + interactions.remove(interaction.press) + } + is DragInteraction.Start -> { + interactions.add(interaction) + } + is DragInteraction.Stop -> { + interactions.remove(interaction.start) + } + is DragInteraction.Cancel -> { + interactions.remove(interaction.start) + } + } + } + } + // [END android_compose_interactions_add_remove] + + // [START android_compose_interactions_is_pressed_or_dragged] + val isPressedOrDragged = interactions.isNotEmpty() + // [END android_compose_interactions_is_pressed_or_dragged] + + // [START android_compose_interactions_last] + val lastInteraction = when (interactions.lastOrNull()) { + is DragInteraction.Start -> "Dragged" + is PressInteraction.Press -> "Pressed" + else -> "No state" + } + // [END android_compose_interactions_last] +} + +@Composable +private fun InteractionsSnippet4() { + // [START android_compose_interactions_batched] + val interactionSource = remember { MutableInteractionSource() } + val isPressed by interactionSource.collectIsPressedAsState() + + Button(onClick = { /* do something */ }, interactionSource = interactionSource) { + Text(if (isPressed) "Pressed!" else "Not pressed") + } + // [END android_compose_interactions_batched] +} + +// [START android_compose_interactions_press_icon_button] +@Composable +fun PressIconButton( + onClick: () -> Unit, + icon: @Composable () -> Unit, + text: @Composable () -> Unit, + modifier: Modifier = Modifier, + interactionSource: MutableInteractionSource? = null +) { + val isPressed = interactionSource?.collectIsPressedAsState()?.value ?: false + + Button( + onClick = onClick, + modifier = modifier, + interactionSource = interactionSource + ) { + AnimatedVisibility(visible = isPressed) { + if (isPressed) { + Row { + icon() + Spacer(Modifier.size(ButtonDefaults.IconSpacing)) + } + } + } + text() + } +} +// [END android_compose_interactions_press_icon_button] + +@Composable +fun PressIconButtonUsage() { +// [START android_compose_interactions_press_icon_button_usage] + PressIconButton( + onClick = {}, + icon = { Icon(Icons.Filled.ShoppingCart, contentDescription = null) }, + text = { Text("Add to cart") } + ) +// [END android_compose_interactions_press_icon_button_usage] +} + +@Composable +fun InteractionsSnippet5() { +// [START android_compose_interactions_indication] + val interactionSource = remember { MutableInteractionSource() } + val isPressed by interactionSource.collectIsPressedAsState() + val scale by animateFloatAsState(targetValue = if (isPressed) 0.9f else 1f, label = "scale") + + Button( + modifier = Modifier.scale(scale), + onClick = { }, + interactionSource = interactionSource + ) { + Text(if (isPressed) "Pressed!" else "Not pressed") + } +// [END android_compose_interactions_indication] +} + +// [START android_compose_interactions_scale_node] +private class ScaleNode(private val interactionSource: InteractionSource) : + Modifier.Node(), DrawModifierNode { + + var currentPressPosition: Offset = Offset.Zero + val animatedScalePercent = Animatable(1f) + + private suspend fun animateToPressed(pressPosition: Offset) { + currentPressPosition = pressPosition + animatedScalePercent.animateTo(0.9f, spring()) + } + + private suspend fun animateToResting() { + animatedScalePercent.animateTo(1f, spring()) + } + + override fun onAttach() { + coroutineScope.launch { + interactionSource.interactions.collectLatest { interaction -> + when (interaction) { + is PressInteraction.Press -> animateToPressed(interaction.pressPosition) + is PressInteraction.Release -> animateToResting() + is PressInteraction.Cancel -> animateToResting() + } + } + } + } + + override fun ContentDrawScope.draw() { + scale( + scale = animatedScalePercent.value, + pivot = currentPressPosition + ) { + this@draw.drawContent() + } + } +} +// [END android_compose_interactions_scale_node] + +// [START android_compose_interactions_scale_node_factory] +object ScaleIndication : IndicationNodeFactory { + override fun create(interactionSource: InteractionSource): DelegatableNode { + return ScaleNode(interactionSource) + } + + override fun equals(other: Any?): Boolean = other === ScaleIndication + override fun hashCode() = 100 +} +// [END android_compose_interactions_scale_node_factory] + +@Composable +fun InteractionSnippets6() { +// [START android_compose_interactions_button_indication] + Box( + modifier = Modifier + .size(100.dp) + .clickable( + onClick = {}, + indication = ScaleIndication, + interactionSource = null + ) + .background(Color.Blue), + contentAlignment = Alignment.Center + ) { + Text("Hello!", color = Color.White) + } +// [END android_compose_interactions_button_indication] +} + +// [START android_compose_interactions_scale_button] +@Composable +fun ScaleButton( + onClick: () -> Unit, + modifier: Modifier = Modifier, + enabled: Boolean = true, + interactionSource: MutableInteractionSource? = null, + shape: Shape = CircleShape, + content: @Composable RowScope.() -> Unit +) { + Row( + modifier = modifier + .defaultMinSize(minWidth = 76.dp, minHeight = 48.dp) + .clickable( + enabled = enabled, + indication = ScaleIndication, + interactionSource = interactionSource, + onClick = onClick + ) + .border(width = 2.dp, color = Color.Blue, shape = shape) + .padding(horizontal = 16.dp, vertical = 8.dp), + horizontalArrangement = Arrangement.Center, + verticalAlignment = Alignment.CenterVertically, + content = content + ) +} +// [END android_compose_interactions_scale_button] + +@Composable +fun ScaleButtonExample() { +// [START android_compose_interactions_scale_button_example] + ScaleButton(onClick = {}) { + Icon(Icons.Filled.ShoppingCart, "") + Spacer(Modifier.padding(10.dp)) + Text(text = "Add to cart!") + } +// [END android_compose_interactions_scale_button_example] +} + +// [START android_compose_interactions_neon_node] +private class NeonNode( + private val shape: Shape, + private val borderWidth: Dp, + private val interactionSource: InteractionSource +) : Modifier.Node(), DrawModifierNode { + var currentPressPosition: Offset = Offset.Zero + val animatedProgress = Animatable(0f) + val animatedPressAlpha = Animatable(1f) + + var pressedAnimation: Job? = null + var restingAnimation: Job? = null + + private suspend fun animateToPressed(pressPosition: Offset) { + // Finish any existing animations, in case of a new press while we are still showing + // an animation for a previous one + restingAnimation?.cancel() + pressedAnimation?.cancel() + pressedAnimation = coroutineScope.launch { + currentPressPosition = pressPosition + animatedPressAlpha.snapTo(1f) + animatedProgress.snapTo(0f) + animatedProgress.animateTo(1f, tween(450)) + } + } + + private fun animateToResting() { + restingAnimation = coroutineScope.launch { + // Wait for the existing press animation to finish if it is still ongoing + pressedAnimation?.join() + animatedPressAlpha.animateTo(0f, tween(250)) + animatedProgress.snapTo(0f) + } + } + + override fun onAttach() { + coroutineScope.launch { + interactionSource.interactions.collect { interaction -> + when (interaction) { + is PressInteraction.Press -> animateToPressed(interaction.pressPosition) + is PressInteraction.Release -> animateToResting() + is PressInteraction.Cancel -> animateToResting() + } + } + } + } + + override fun ContentDrawScope.draw() { + val (startPosition, endPosition) = calculateGradientStartAndEndFromPressPosition( + currentPressPosition, size + ) + val brush = animateBrush( + startPosition = startPosition, + endPosition = endPosition, + progress = animatedProgress.value + ) + val alpha = animatedPressAlpha.value + + drawContent() + + val outline = shape.createOutline(size, layoutDirection, this) + // Draw overlay on top of content + drawOutline( + outline = outline, + brush = brush, + alpha = alpha * 0.1f + ) + // Draw border on top of overlay + drawOutline( + outline = outline, + brush = brush, + alpha = alpha, + style = Stroke(width = borderWidth.toPx()) + ) + } + + /** + * Calculates a gradient start / end where start is the point on the bounding rectangle of + * size [size] that intercepts with the line drawn from the center to [pressPosition], + * and end is the intercept on the opposite end of that line. + */ + private fun calculateGradientStartAndEndFromPressPosition( + pressPosition: Offset, + size: Size + ): Pair { + // Convert to offset from the center + val offset = pressPosition - size.center + // y = mx + c, c is 0, so just test for x and y to see where the intercept is + val gradient = offset.y / offset.x + // We are starting from the center, so halve the width and height - convert the sign + // to match the offset + val width = (size.width / 2f) * sign(offset.x) + val height = (size.height / 2f) * sign(offset.y) + val x = height / gradient + val y = gradient * width + + // Figure out which intercept lies within bounds + val intercept = if (abs(y) <= abs(height)) { + Offset(width, y) + } else { + Offset(x, height) + } + + // Convert back to offsets from 0,0 + val start = intercept + size.center + val end = Offset(size.width - start.x, size.height - start.y) + return start to end + } + + private fun animateBrush( + startPosition: Offset, + endPosition: Offset, + progress: Float + ): Brush { + if (progress == 0f) return TransparentBrush + + // This is *expensive* - we are doing a lot of allocations on each animation frame. To + // recreate a similar effect in a performant way, it would be better to create one large + // gradient and translate it on each frame, instead of creating a whole new gradient + // and shader. The current approach will be janky! + val colorStops = buildList { + when { + progress < 1 / 6f -> { + val adjustedProgress = progress * 6f + add(0f to Blue) + add(adjustedProgress to Color.Transparent) + } + progress < 2 / 6f -> { + val adjustedProgress = (progress - 1 / 6f) * 6f + add(0f to Purple) + add(adjustedProgress * MaxBlueStop to Blue) + add(adjustedProgress to Blue) + add(1f to Color.Transparent) + } + progress < 3 / 6f -> { + val adjustedProgress = (progress - 2 / 6f) * 6f + add(0f to Pink) + add(adjustedProgress * MaxPurpleStop to Purple) + add(MaxBlueStop to Blue) + add(1f to Blue) + } + progress < 4 / 6f -> { + val adjustedProgress = (progress - 3 / 6f) * 6f + add(0f to Orange) + add(adjustedProgress * MaxPinkStop to Pink) + add(MaxPurpleStop to Purple) + add(MaxBlueStop to Blue) + add(1f to Blue) + } + progress < 5 / 6f -> { + val adjustedProgress = (progress - 4 / 6f) * 6f + add(0f to Yellow) + add(adjustedProgress * MaxOrangeStop to Orange) + add(MaxPinkStop to Pink) + add(MaxPurpleStop to Purple) + add(MaxBlueStop to Blue) + add(1f to Blue) + } + else -> { + val adjustedProgress = (progress - 5 / 6f) * 6f + add(0f to Yellow) + add(adjustedProgress * MaxYellowStop to Yellow) + add(MaxOrangeStop to Orange) + add(MaxPinkStop to Pink) + add(MaxPurpleStop to Purple) + add(MaxBlueStop to Blue) + add(1f to Blue) + } + } + } + + return linearGradient( + colorStops = colorStops.toTypedArray(), + start = startPosition, + end = endPosition + ) + } + + companion object { + val TransparentBrush = SolidColor(Color.Transparent) + val Blue = Color(0xFF30C0D8) + val Purple = Color(0xFF7848A8) + val Pink = Color(0xFFF03078) + val Orange = Color(0xFFF07800) + val Yellow = Color(0xFFF0D800) + const val MaxYellowStop = 0.16f + const val MaxOrangeStop = 0.33f + const val MaxPinkStop = 0.5f + const val MaxPurpleStop = 0.67f + const val MaxBlueStop = 0.83f + } +} +// [END android_compose_interactions_neon_node] + +// [START android_compose_interactions_neon_indication] +class NeonIndication(private val shape: Shape, private val borderWidth: Dp) : IndicationNodeFactory { + + override fun create(interactionSource: InteractionSource): DelegatableNode { + return NeonNode( + shape, + // Double the border size for a stronger press effect + borderWidth * 2, + interactionSource + ) + } + + override fun equals(other: Any?): Boolean { + if (this === other) return true + if (javaClass != other?.javaClass) return false + + other as NeonIndication + + if (shape != other.shape) return false + if (borderWidth != other.borderWidth) return false + + return true + } + + override fun hashCode(): Int { + var result = shape.hashCode() + result = 31 * result + borderWidth.hashCode() + return result + } +} +// [END android_compose_interactions_neon_indication] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/focus/FocusSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/focus/FocusSnippets.kt index 4a5c7c4c8..2391d48b3 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/focus/FocusSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/focus/FocusSnippets.kt @@ -14,6 +14,8 @@ * limitations under the License. */ +@file:Suppress("DEPRECATION_ERROR") + package com.example.compose.snippets.touchinput.focus import androidx.compose.foundation.ExperimentalFoundationApi diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt index 285dfef69..e34dfaa60 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt @@ -14,21 +14,30 @@ * limitations under the License. */ +@file:Suppress("DEPRECATION_ERROR") + package com.example.compose.snippets.touchinput.userinteractions import androidx.compose.animation.core.Animatable import androidx.compose.animation.core.spring import androidx.compose.foundation.Indication import androidx.compose.foundation.IndicationInstance +import androidx.compose.foundation.IndicationNodeFactory import androidx.compose.foundation.clickable import androidx.compose.foundation.interaction.InteractionSource import androidx.compose.foundation.interaction.MutableInteractionSource 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.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect @@ -38,8 +47,11 @@ import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.drawscope.ContentDrawScope import androidx.compose.ui.graphics.drawscope.scale +import androidx.compose.ui.node.DelegatableNode +import androidx.compose.ui.node.DrawModifierNode import com.example.compose.snippets.architecture.Button import kotlinx.coroutines.flow.collectLatest +import kotlinx.coroutines.launch // [START android_compose_userinteractions_scale_indication] // [START android_compose_userinteractions_scale_indication_object] @@ -105,6 +117,21 @@ private fun RememberRippleExample() { // [END android_compose_userinteractions_material_remember_ripple] } +// [START android_compose_userinteractions_material_ripple] +@Composable +private fun RippleExample() { + Box( + Modifier.clickable( + onClick = {}, + interactionSource = remember { MutableInteractionSource() }, + indication = ripple() + ) + ) { + // ... + } +} +// [END android_compose_userinteractions_material_ripple] + // [START android_compose_userinteractions_disabled_ripple_theme] private object DisabledRippleTheme : RippleTheme { @@ -154,3 +181,122 @@ private fun MyComposable2() { } // [END_EXCLUDE] // [END android_compose_userinteractions_disabled_ripple_theme_color_alpha] + +// Snippets for new ripple API + +// [START android_compose_userinteractions_scale_indication_node_factory] +object ScaleIndicationNodeFactory : IndicationNodeFactory { + override fun create(interactionSource: InteractionSource): DelegatableNode { + return ScaleIndicationNode(interactionSource) + } + + override fun hashCode(): Int = -1 + + override fun equals(other: Any?) = other === this +} +// [END android_compose_userinteractions_scale_indication_node_factory] + +// [START android_compose_userinteractions_scale_indication_node] +private class ScaleIndicationNode( + private val interactionSource: InteractionSource +) : Modifier.Node(), DrawModifierNode { + var currentPressPosition: Offset = Offset.Zero + val animatedScalePercent = Animatable(1f) + + private suspend fun animateToPressed(pressPosition: Offset) { + currentPressPosition = pressPosition + animatedScalePercent.animateTo(0.9f, spring()) + } + + private suspend fun animateToResting() { + animatedScalePercent.animateTo(1f, spring()) + } + + override fun onAttach() { + coroutineScope.launch { + interactionSource.interactions.collectLatest { interaction -> + when (interaction) { + is PressInteraction.Press -> animateToPressed(interaction.pressPosition) + is PressInteraction.Release -> animateToResting() + is PressInteraction.Cancel -> animateToResting() + } + } + } + } + + override fun ContentDrawScope.draw() { + scale( + scale = animatedScalePercent.value, + pivot = currentPressPosition + ) { + this@draw.drawContent() + } + } +} +// [END android_compose_userinteractions_scale_indication_node] + +@Composable +fun App() { +} + +@OptIn(ExperimentalMaterialApi::class) +@Composable +private fun LocalUseFallbackRippleImplementationExample() { +// [START android_compose_userinteractions_localusefallbackrippleimplementation] + CompositionLocalProvider(LocalUseFallbackRippleImplementation provides true) { + MaterialTheme { + App() + } + } +// [END android_compose_userinteractions_localusefallbackrippleimplementation] +} + +// [START android_compose_userinteractions_localusefallbackrippleimplementation_app_theme] +@OptIn(ExperimentalMaterialApi::class) +@Composable +fun MyAppTheme(content: @Composable () -> Unit) { + CompositionLocalProvider(LocalUseFallbackRippleImplementation provides true) { + MaterialTheme(content = content) + } +} +// [END android_compose_userinteractions_localusefallbackrippleimplementation_app_theme] + +// [START android_compose_userinteractions_disabled_ripple_configuration] +@OptIn(ExperimentalMaterialApi::class) +private val DisabledRippleConfiguration = + RippleConfiguration(isEnabled = false) + +// [START_EXCLUDE] +@OptIn(ExperimentalMaterialApi::class) +@Composable +private fun MyComposableDisabledRippleConfig() { +// [END_EXCLUDE] + CompositionLocalProvider(LocalRippleConfiguration provides DisabledRippleConfiguration) { + Button { + // ... + } + } +// [START_EXCLUDE silent] +} +// [END_EXCLUDE] +// [END android_compose_userinteractions_disabled_ripple_configuration] + +// [START android_compose_userinteractions_my_ripple_configuration] +@OptIn(ExperimentalMaterialApi::class) +private val MyRippleConfiguration = + RippleConfiguration(color = Color.Red, rippleAlpha = MyRippleAlpha) + +// [START_EXCLUDE] +@OptIn(ExperimentalMaterialApi::class) +@Composable +private fun MyComposableMyRippleConfig() { +// [END_EXCLUDE] + CompositionLocalProvider(LocalRippleConfiguration provides MyRippleConfiguration) { + Button { + // ... + } + } +// [START_EXCLUDE silent] +} +// [END_EXCLUDE] +// [END android_compose_userinteractions_my_ripple_configuration] diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index f79bca6b6..f01b12df1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -22,6 +22,7 @@ coil = "2.4.0" # @keep compileSdk = "34" compose-compiler = "1.5.4" +compose-latest = "1.7.0-alpha01" coroutines = "1.7.3" google-maps = "18.2.0" gradle-versions = "0.49.0" @@ -51,11 +52,11 @@ androidx-activity-compose = { module = "androidx.activity:activity-compose", ver androidx-appcompat = { module = "androidx.appcompat:appcompat", version.ref = "androidx-appcompat" } androidx-compose-animation-graphics = { module = "androidx.compose.animation:animation-graphics" } androidx-compose-bom = { module = "androidx.compose:compose-bom", 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-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-material-iconsExtended = { module = "androidx.compose.material:material-icons-extended" } -androidx-compose-material-ripple = { module = "androidx.compose.material:material-ripple" } +androidx-compose-material-ripple = { module = "androidx.compose.material:material-ripple", version.ref = "compose-latest" } androidx-compose-material3 = { module = "androidx.compose.material3:material3" } androidx-compose-material3-adaptive = { module = "androidx.compose.material3:material3-adaptive", version.ref = "material3-adaptive" } androidx-compose-material3-adaptive-navigation-suite = { module = "androidx.compose.material3:material3-adaptive-navigation-suite", version.ref = "material3-adaptive-navigation-suite" } From 0bad0251bc3299cacaa1f9a822361c5acb349b0d Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Wed, 24 Jan 2024 13:06:38 -0800 Subject: [PATCH 02/59] Convert NeonIndication to data class. (#193) --- .../snippets/touchinput/Interactions.kt | 20 +------------------ 1 file changed, 1 insertion(+), 19 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/Interactions.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/Interactions.kt index 0d6700602..14b012da1 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/Interactions.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/Interactions.kt @@ -629,7 +629,7 @@ private class NeonNode( // [END android_compose_interactions_neon_node] // [START android_compose_interactions_neon_indication] -class NeonIndication(private val shape: Shape, private val borderWidth: Dp) : IndicationNodeFactory { +data class NeonIndication(private val shape: Shape, private val borderWidth: Dp) : IndicationNodeFactory { override fun create(interactionSource: InteractionSource): DelegatableNode { return NeonNode( @@ -639,23 +639,5 @@ class NeonIndication(private val shape: Shape, private val borderWidth: Dp) : In interactionSource ) } - - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (javaClass != other?.javaClass) return false - - other as NeonIndication - - if (shape != other.shape) return false - if (borderWidth != other.borderWidth) return false - - return true - } - - override fun hashCode(): Int { - var result = shape.hashCode() - result = 31 * result + borderWidth.hashCode() - return result - } } // [END android_compose_interactions_neon_indication] From 5cb7dd2dbe30f0680e4f9f8b34839c8eae120252 Mon Sep 17 00:00:00 2001 From: MagicalMeghan <46006059+MagicalMeghan@users.noreply.github.com> Date: Tue, 30 Jan 2024 17:35:01 -0500 Subject: [PATCH 03/59] Adding pip snippets to latest branch (#196) * Adding pip snippets to latest branch * Apply Spotless * Adding pip snippets to latest --------- Co-authored-by: MagicalMeghan --- .../PictureInPictureSnippets.kt | 95 +++++++++++++++++++ gradle/libs.versions.toml | 2 +- 2 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt new file mode 100644 index 000000000..79e8805f9 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt @@ -0,0 +1,95 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.pictureinpicture + +import android.app.PictureInPictureParams +import android.content.Context +import android.content.ContextWrapper +import android.os.Build +import android.util.Log +import androidx.activity.ComponentActivity +import androidx.compose.runtime.Composable +import androidx.compose.runtime.DisposableEffect +import androidx.compose.runtime.getValue +import androidx.compose.runtime.rememberUpdatedState +import androidx.compose.ui.platform.LocalContext + +@Composable +fun PipListenerPreAPI12(shouldEnterPipMode: Boolean) { + // [START android_compose_pip_pre12_listener] + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && + Build.VERSION.SDK_INT < Build.VERSION_CODES.S + ) { + val context = LocalContext.current + DisposableEffect(context) { + val onUserLeaveBehavior: () -> Unit = { + context.findActivity() + .enterPictureInPictureMode(PictureInPictureParams.Builder().build()) + } + context.findActivity().addOnUserLeaveHintListener( + onUserLeaveBehavior + ) + onDispose { + context.findActivity().removeOnUserLeaveHintListener( + onUserLeaveBehavior + ) + } + } + } else { + Log.i("PiP info", "API does not support PiP") + } + // [END android_compose_pip_pre12_listener] +} + +@Composable +fun EnterPiPPre12(shouldEnterPipMode: Boolean) { + // [START android_compose_pip_pre12_should_enter_pip] + val currentShouldEnterPipMode by rememberUpdatedState(newValue = shouldEnterPipMode) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && + Build.VERSION.SDK_INT < Build.VERSION_CODES.S + ) { + val context = LocalContext.current + DisposableEffect(context) { + val onUserLeaveBehavior: () -> Unit = { + if (currentShouldEnterPipMode) { + context.findActivity() + .enterPictureInPictureMode(PictureInPictureParams.Builder().build()) + } + } + context.findActivity().addOnUserLeaveHintListener( + onUserLeaveBehavior + ) + onDispose { + context.findActivity().removeOnUserLeaveHintListener( + onUserLeaveBehavior + ) + } + } + } else { + Log.i("PiP info", "API does not support PiP") + } + // [END android_compose_pip_pre12_should_enter_pip] +} + +internal fun Context.findActivity(): ComponentActivity { + var context = this + while (context is ContextWrapper) { + if (context is ComponentActivity) return context + context = context.baseContext + } + throw IllegalStateException("Picture in picture should be called in the context of an Activity") +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 1b32f8851..34a119488 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] accompanist = "0.32.0" androidGradlePlugin = "8.2.2" -androidx-activity-compose = "1.9.0-alpha02" +androidx-activity-compose = "1.9.0-alpha01" androidx-appcompat = "1.6.1" androidx-compose-bom = "2024.01.00" androidx-constraintlayout = "2.1.4" From 940a4007a83d5a02d8693e1b5d18bad3a8faa3b2 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Fri, 9 Feb 2024 10:27:11 -0800 Subject: [PATCH 04/59] Delete pictureInPicture. (#213) --- .../PictureInPictureSnippets.kt | 346 ------------------ 1 file changed, 346 deletions(-) delete mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt deleted file mode 100644 index cfd0555f9..000000000 --- a/compose/snippets/src/main/java/com/example/compose/snippets/pictureInPicture/PictureInPictureSnippets.kt +++ /dev/null @@ -1,346 +0,0 @@ -/* - * Copyright 2023 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.compose.snippets.pictureInPicture - -import android.app.PictureInPictureParams -import android.app.RemoteAction -import android.content.BroadcastReceiver -import android.content.Context -import android.content.ContextWrapper -import android.content.Intent -import android.content.IntentFilter -import android.os.Build -import android.util.Log -import android.util.Rational -import androidx.activity.ComponentActivity -import androidx.annotation.RequiresApi -import androidx.compose.foundation.layout.Column -import androidx.compose.material3.Button -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.DisposableEffect -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Modifier -import androidx.compose.ui.graphics.toAndroidRectF -import androidx.compose.ui.layout.boundsInWindow -import androidx.compose.ui.layout.onGloballyPositioned -import androidx.compose.ui.platform.LocalContext -import androidx.core.app.PictureInPictureModeChangedInfo -import androidx.core.content.ContextCompat -import androidx.core.graphics.toRect -import androidx.core.util.Consumer -import androidx.media3.common.Player -import androidx.media3.exoplayer.ExoPlayer - -var shouldEnterPipMode by mutableStateOf(false) -private const val PIP_TAG = "PiP info" - -// [START android_compose_pip_broadcast_receiver_constants] -// Constant for broadcast receiver -const val ACTION_BROADCAST_CONTROL = "broadcast_control" - -// Intent extras for broadcast controls from Picture-in-Picture mode. -const val EXTRA_CONTROL_TYPE = "control_type" -const val EXTRA_CONTROL_PLAY = 1 -const val EXTRA_CONTROL_PAUSE = 2 -// [END android_compose_pip_broadcast_receiver_constants] - -@Composable -fun PiPBuilderSetAutoEnterEnabled( - modifier: Modifier = Modifier -) { - val context = LocalContext.current - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - // [START android_compose_pip_builder_auto_enter] - val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> - val builder = PictureInPictureParams.Builder() - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - builder.setAutoEnterEnabled(true) - } - context.findActivity().setPictureInPictureParams(builder.build()) - } - VideoPlayer(pipModifier) - // [END android_compose_pip_builder_auto_enter] - } else { - Log.i(PIP_TAG, "API does not support PiP") - } -} - -// [START android_compose_pip_find_activity] -internal fun Context.findActivity(): ComponentActivity { - var context = this - while (context is ContextWrapper) { - if (context is ComponentActivity) return context - context = context.baseContext - } - throw IllegalStateException("Picture in picture should be called in the context of an Activity") -} -// [END android_compose_pip_find_activity] - -@Composable -fun EnterPiPThroughButton() { - // [START android_compose_pip_button_click] - val context = LocalContext.current - Button(onClick = { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - context.findActivity().enterPictureInPictureMode( - PictureInPictureParams.Builder().build() - ) - } else { - Log.i(PIP_TAG, "API does not support PiP") - } - }) { - Text(text = "Enter PiP mode!") - } - // [END android_compose_pip_button_click] -} - -// [START android_compose_pip_is_in_pip_mode] -@Composable -fun rememberIsInPipMode(): Boolean { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - val activity = LocalContext.current.findActivity() - var pipMode by remember { mutableStateOf(activity.isInPictureInPictureMode) } - DisposableEffect(activity) { - val observer = Consumer { info -> - pipMode = info.isInPictureInPictureMode - } - activity.addOnPictureInPictureModeChangedListener( - observer - ) - onDispose { activity.removeOnPictureInPictureModeChangedListener(observer) } - } - return pipMode - } else { - return false - } -} -// [END android_compose_pip_is_in_pip_mode] - -@Composable -fun VideoPlayer() { -} -@Composable -fun VideoPlayer(modifier: Modifier) { -} - -@Composable -fun ToggleUIBasedOnPiP( - modifier: Modifier = Modifier, -) { - // [START android_compose_pip_ui_toggle] - val inPipMode = rememberIsInPipMode() - - Column(modifier = modifier) { - // This text will only show up when the app is in PiP mode - if (!inPipMode) { - Text( - text = "Picture in Picture", - ) - } - VideoPlayer() - } - // [END android_compose_pip_ui_toggle] -} - -fun initializePlayer(context: Context) { - val player = ExoPlayer.Builder(context.applicationContext) - .build().apply {} - - // [START android_compose_pip_toggle_pip_on_if_video_is_playing] - player.addListener(object : Player.Listener { - override fun onIsPlayingChanged(isPlaying: Boolean) { - shouldEnterPipMode = isPlaying - } - }) - // [END android_compose_pip_toggle_pip_on_if_video_is_playing] -} - -// [START android_compose_pip_release_player] -fun releasePlayer() { - shouldEnterPipMode = false -} -// [END android_compose_pip_release_player] - -@Composable -fun PiPBuilderSetAutoEnterEnabledUsingState( - shouldEnterPipMode: Boolean, - modifier: Modifier = Modifier, -) { - val context = LocalContext.current - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - // [START android_compose_pip_post_12_should_enter_pip] - val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> - val builder = PictureInPictureParams.Builder() - - // Add autoEnterEnabled for versions S and up - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - builder.setAutoEnterEnabled(shouldEnterPipMode) - } - context.findActivity().setPictureInPictureParams(builder.build()) - } - - VideoPlayer(pipModifier) - // [END android_compose_pip_post_12_should_enter_pip] - } else { - Log.i(PIP_TAG, "API does not support PiP") - } -} - -@Composable -fun PiPBuilderSetSourceRect( - shouldEnterPipMode: Boolean, - modifier: Modifier = Modifier, -) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - // [START android_compose_pip_set_source_rect] - val context = LocalContext.current - - val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> - val builder = PictureInPictureParams.Builder() - if (shouldEnterPipMode) { - val sourceRect = layoutCoordinates.boundsInWindow().toAndroidRectF().toRect() - builder.setSourceRectHint(sourceRect) - } - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - builder.setAutoEnterEnabled(shouldEnterPipMode) - } - context.findActivity().setPictureInPictureParams(builder.build()) - } - - VideoPlayer(pipModifier) - // [END android_compose_pip_set_source_rect] - } else { - Log.i(PIP_TAG, "API does not support PiP") - } -} - -@Composable -fun PiPBuilderSetAspectRatio( - shouldEnterPipMode: Boolean, - modifier: Modifier = Modifier, -) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - // [START android_compose_pip_set_aspect_ratio] - val context = LocalContext.current - - val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> - val builder = PictureInPictureParams.Builder() - - if (shouldEnterPipMode) { - val sourceRect = layoutCoordinates.boundsInWindow().toAndroidRectF().toRect() - builder.setSourceRectHint(sourceRect) - builder.setAspectRatio( - Rational(sourceRect.width(), sourceRect.height()) - ) - } - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - builder.setAutoEnterEnabled(shouldEnterPipMode) - } - context.findActivity().setPictureInPictureParams(builder.build()) - } - - VideoPlayer(pipModifier) - // [END android_compose_pip_set_aspect_ratio] - } else { - Log.i(PIP_TAG, "API does not support PiP") - } -} - -// [START android_compose_pip_broadcast_receiver] -@RequiresApi(Build.VERSION_CODES.O) -@Composable -fun PlayerBroadcastReceiver(player: Player?) { - val isInPipMode = rememberIsInPipMode() - if (!isInPipMode || player == null) { - // Broadcast receiver is only used if app is in PiP mode and player is non null - return - } - val context = LocalContext.current - - DisposableEffect(player) { - val broadcastReceiver: BroadcastReceiver = object : BroadcastReceiver() { - override fun onReceive(context: Context?, intent: Intent?) { - if ((intent == null) || (intent.action != ACTION_BROADCAST_CONTROL)) { - return - } - - when (intent.getIntExtra(EXTRA_CONTROL_TYPE, 0)) { - EXTRA_CONTROL_PAUSE -> player.pause() - EXTRA_CONTROL_PLAY -> player.play() - } - } - } - ContextCompat.registerReceiver( - context, - broadcastReceiver, - IntentFilter(ACTION_BROADCAST_CONTROL), - ContextCompat.RECEIVER_NOT_EXPORTED - ) - onDispose { - context.unregisterReceiver(broadcastReceiver) - } - } -} -// [END android_compose_pip_broadcast_receiver] - -@RequiresApi(Build.VERSION_CODES.O) -fun listOfRemoteActions(): List { - return listOf() -} - -@Composable -fun PiPBuilderAddRemoteActions( - shouldEnterPipMode: Boolean, - modifier: Modifier = Modifier, -) { - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - // [START android_compose_pip_add_remote_actions] - val context = LocalContext.current - - val pipModifier = modifier.onGloballyPositioned { layoutCoordinates -> - val builder = PictureInPictureParams.Builder() - builder.setActions( - listOfRemoteActions() - ) - - if (shouldEnterPipMode) { - val sourceRect = layoutCoordinates.boundsInWindow().toAndroidRectF().toRect() - builder.setSourceRectHint(sourceRect) - builder.setAspectRatio( - Rational(sourceRect.width(), sourceRect.height()) - ) - } - - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { - builder.setAutoEnterEnabled(shouldEnterPipMode) - } - context.findActivity().setPictureInPictureParams(builder.build()) - } - VideoPlayer(modifier = pipModifier) - // [END android_compose_pip_add_remote_actions] - } else { - Log.i(PIP_TAG, "API does not support PiP") - } -} From 41acfd79bae1ce5c68e5b3e0ed6c90017bc4e858 Mon Sep 17 00:00:00 2001 From: MagicalMeghan <46006059+MagicalMeghan@users.noreply.github.com> Date: Wed, 14 Feb 2024 14:42:01 -0500 Subject: [PATCH 05/59] Update activity compose level and align log tag with main branch (#215) --- .../snippets/pictureinpicture/PictureInPictureSnippets.kt | 5 +++-- gradle/libs.versions.toml | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt index 79e8805f9..8830493f3 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/pictureinpicture/PictureInPictureSnippets.kt @@ -28,6 +28,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.rememberUpdatedState import androidx.compose.ui.platform.LocalContext +private const val PIP_TAG = "PiP info" @Composable fun PipListenerPreAPI12(shouldEnterPipMode: Boolean) { // [START android_compose_pip_pre12_listener] @@ -50,7 +51,7 @@ fun PipListenerPreAPI12(shouldEnterPipMode: Boolean) { } } } else { - Log.i("PiP info", "API does not support PiP") + Log.i(PIP_TAG, "API does not support PiP") } // [END android_compose_pip_pre12_listener] } @@ -80,7 +81,7 @@ fun EnterPiPPre12(shouldEnterPipMode: Boolean) { } } } else { - Log.i("PiP info", "API does not support PiP") + Log.i(PIP_TAG, "API does not support PiP") } // [END android_compose_pip_pre12_should_enter_pip] } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 511cf835c..0462bdf7e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,7 +1,7 @@ [versions] accompanist = "0.32.0" androidGradlePlugin = "8.2.2" -androidx-activity-compose = "1.9.0-alpha01" +androidx-activity-compose = "1.9.0-alpha03" androidx-appcompat = "1.6.1" androidx-compose-bom = "2024.01.00" androidx-constraintlayout = "2.1.4" From 8242f9edb067c6a76cb3db20f7c0e481f4a3b214 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Mon, 11 Mar 2024 14:22:19 +0000 Subject: [PATCH 06/59] Migrate recomposeHighlighter to Modifier.Node (#197) (#238) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Migrate recomposeHighlighter to Modifier.Node * Apply Spotless * Simplify recompose highlighter * Apply Spotless --------- Co-authored-by: Tomáš Mlynarič Co-authored-by: mlykotom From bf832068dcded0fdb533434a0847bac69b44b8a7 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 12 Mar 2024 09:18:44 +0000 Subject: [PATCH 07/59] Adding samples for ContextualFlowRow (#234) * Add snippets for ContextualFlowRow * Apply Spotless * Update flow snippets * Apply Spotless --------- Co-authored-by: riggaroo --- .../snippets/layouts/FlowLayoutSnippets.kt | 133 +++++++++++++++++- gradle/libs.versions.toml | 2 +- 2 files changed, 128 insertions(+), 7 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt index 941ae99df..203f12838 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt @@ -21,25 +21,40 @@ import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.ContextualFlowRow +import androidx.compose.foundation.layout.ContextualFlowRowOverflow +import androidx.compose.foundation.layout.ContextualFlowRowOverflowScope import androidx.compose.foundation.layout.ExperimentalLayoutApi +import androidx.compose.foundation.layout.FlowColumn import androidx.compose.foundation.layout.FlowRow import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.safeDrawingPadding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.wrapContentHeight +import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.verticalScroll import androidx.compose.material.Chip import androidx.compose.material.ExperimentalMaterialApi -import androidx.compose.material.Text +import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip 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 com.example.compose.snippets.util.MaterialColors @Preview @@ -262,10 +277,10 @@ private fun FlowItems() { @OptIn(ExperimentalMaterialApi::class) @Composable -fun ChipItem(text: String) { +fun ChipItem(text: String, onClick: () -> Unit = {}) { Chip( modifier = Modifier.padding(end = 4.dp), - onClick = {}, + onClick = onClick, leadingIcon = {}, border = BorderStroke(1.dp, Color(0xFF3B3A3C)) ) { @@ -426,9 +441,115 @@ fun FlowLayout_FractionalSizing() { ) { val itemModifier = Modifier .clip(RoundedCornerShape(8.dp)) - Box(modifier = itemModifier.height(200.dp).width(60.dp).background(Color.Red)) - Box(modifier = itemModifier.height(200.dp).fillMaxWidth(0.7f).background(Color.Blue)) - Box(modifier = itemModifier.height(200.dp).weight(1f).background(Color.Magenta)) + Box( + modifier = itemModifier + .height(200.dp) + .width(60.dp) + .background(Color.Red) + ) + Box( + modifier = itemModifier + .height(200.dp) + .fillMaxWidth(0.7f) + .background(Color.Blue) + ) + Box( + modifier = itemModifier + .height(200.dp) + .weight(1f) + .background(Color.Magenta) + ) } // [END android_compose_flow_layout_fractional_sizing] } + +@OptIn(ExperimentalLayoutApi::class) +@Preview +@Composable +fun ContextualFlowLayoutExample() { + // [START android_compose_layouts_contextual_flow] + val totalCount = 40 + var maxLines by remember { + mutableStateOf(2) + } + + val moreOrCollapseIndicator = @Composable { scope: ContextualFlowRowOverflowScope -> + val remainingItems = totalCount - scope.shownItemCount + ChipItem(if (remainingItems == 0) "Less" else "+$remainingItems", onClick = { + if (remainingItems == 0) { + maxLines = 2 + } else { + maxLines += 5 + } + }) + } + ContextualFlowRow( + modifier = Modifier + .safeDrawingPadding() + .fillMaxWidth(1f) + .padding(16.dp) + .wrapContentHeight(align = Alignment.Top) + .verticalScroll(rememberScrollState()), + verticalArrangement = Arrangement.spacedBy(4.dp), + horizontalArrangement = Arrangement.spacedBy(8.dp), + maxLines = maxLines, + overflow = ContextualFlowRowOverflow.expandOrCollapseIndicator( + minRowsToShowCollapse = 4, + expandIndicator = moreOrCollapseIndicator, + collapseIndicator = moreOrCollapseIndicator + ), + itemCount = totalCount + ) { index -> + ChipItem("Item $index") + } + // [END android_compose_layouts_contextual_flow] +} + +@OptIn(ExperimentalLayoutApi::class) +@Preview +@Composable +fun FillMaxColumnWidth() { + // [START android_compose_flow_layouts_fill_max_column_width] + FlowColumn( + Modifier + .padding(20.dp) + .fillMaxHeight() + .fillMaxWidth(), + horizontalArrangement = Arrangement.spacedBy(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + maxItemsInEachColumn = 5, + ) { + repeat(listDesserts.size) { + Box( + Modifier + .fillMaxColumnWidth() + .border(1.dp, Color.DarkGray, RoundedCornerShape(8.dp)) + .padding(8.dp) + ) { + + Text( + text = listDesserts[it], + fontSize = 18.sp, + modifier = Modifier.padding(3.dp) + ) + } + } + } + // [END android_compose_flow_layouts_fill_max_column_width] +} +private val listDesserts = listOf( + "Apple", + "Banana", + "Cupcake", + "Donut", + "Eclair", + "Froyo", + "Gingerbread", + "Honeycomb", + "Ice Cream Sandwich", + "Jellybean", + "KitKat", + "Lollipop", + "Marshmallow", + "Nougat", +) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0462bdf7e..49a7b25e5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -22,7 +22,7 @@ coil = "2.5.0" # @keep compileSdk = "34" compose-compiler = "1.5.4" -compose-latest = "1.7.0-alpha01" +compose-latest = "1.7.0-alpha03" coroutines = "1.7.3" google-maps = "18.2.0" gradle-versions = "0.51.0" From 2e672f92e12b391400603ef3ee4ecd9c30903e90 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Tue, 9 Apr 2024 00:40:13 +0100 Subject: [PATCH 08/59] Update libs.versions.toml (#247) (#248) Update Compose BOM to 2024.04.00 Co-authored-by: MagicalMeghan <46006059+MagicalMeghan@users.noreply.github.com> From 21a691c0dc423e125dff446ba809939472715844 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 23 Apr 2024 13:22:59 +0100 Subject: [PATCH 09/59] Update Bitmap to image snippet to use new Graphics Layers (#254) * Update libs.versions.toml (#251) * Replace Graphics bitmap snippets with new Graphics Layer snippets. * Replace Graphics bitmap snippets with new Graphics Layer snippets. * Apply Spotless --------- Co-authored-by: Simona <35065668+simona-anomis@users.noreply.github.com> Co-authored-by: riggaroo --- .../compose/snippets/SnippetsActivity.kt | 4 +- .../graphics/AdvancedGraphicsSnippets.kt | 91 +++++++++---------- .../compose/snippets/layouts/PagerSnippets.kt | 2 +- gradle/libs.versions.toml | 11 ++- 4 files changed, 52 insertions(+), 56 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 31037647b..56330061b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -39,7 +39,7 @@ import com.example.compose.snippets.components.ScaffoldExample import com.example.compose.snippets.components.SliderExamples import com.example.compose.snippets.components.SwitchExamples import com.example.compose.snippets.graphics.ApplyPolygonAsClipImage -import com.example.compose.snippets.graphics.BitmapFromComposableSnippet +import com.example.compose.snippets.graphics.BitmapFromComposableFullSnippet import com.example.compose.snippets.graphics.BrushExamplesScreen import com.example.compose.snippets.images.ImageExamplesScreen import com.example.compose.snippets.landing.LandingScreen @@ -70,7 +70,7 @@ class SnippetsActivity : ComponentActivity() { Destination.BrushExamples -> BrushExamplesScreen() Destination.ImageExamples -> ImageExamplesScreen() Destination.AnimationQuickGuideExamples -> AnimationExamplesScreen() - Destination.ScreenshotExample -> BitmapFromComposableSnippet() + Destination.ScreenshotExample -> BitmapFromComposableFullSnippet() Destination.ComponentsExamples -> ComponentsScreen { navController.navigate( it.route diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt index 900f38da6..bc16c96a5 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/AdvancedGraphicsSnippets.kt @@ -21,7 +21,6 @@ import android.content.Context import android.content.Intent import android.content.Intent.createChooser import android.graphics.Bitmap -import android.graphics.Picture import android.media.MediaScannerConnection import android.net.Uri import android.os.Build @@ -29,7 +28,9 @@ import android.os.Environment import android.provider.MediaStore import androidx.compose.foundation.Image import androidx.compose.foundation.background +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.fillMaxSize @@ -44,18 +45,17 @@ import androidx.compose.material3.SnackbarHostState import androidx.compose.material3.SnackbarResult import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope -import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.draw.drawWithContent import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color -import androidx.compose.ui.graphics.drawscope.draw -import androidx.compose.ui.graphics.drawscope.drawIntoCanvas -import androidx.compose.ui.graphics.nativeCanvas +import androidx.compose.ui.graphics.asAndroidBitmap +import androidx.compose.ui.graphics.layer.drawLayer +import androidx.compose.ui.graphics.rememberGraphicsLayer import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource @@ -87,14 +87,44 @@ import kotlinx.coroutines.suspendCancellableCoroutine * limitations under the License. */ +@Preview +@Composable +private fun CreateBitmapFromGraphicsLayer() { + // [START android_compose_graphics_layer_bitmap_basics] + val coroutineScope = rememberCoroutineScope() + val graphicsLayer = rememberGraphicsLayer() + Box( + modifier = Modifier + .drawWithContent { + // call record to capture the content in the graphics layer + graphicsLayer.record { + // draw the contents of the composable into the graphics layer + this@drawWithContent.drawContent() + } + // draw the graphics layer on the visible canvas + drawLayer(graphicsLayer) + } + .clickable { + coroutineScope.launch { + val bitmap = graphicsLayer.toImageBitmap() + // do something with the newly acquired bitmap + } + } + .background(Color.White) + ) { + Text("Hello Android", fontSize = 26.sp) + } + // [END android_compose_graphics_layer_bitmap_basics] +} + @OptIn(ExperimentalPermissionsApi::class) @Preview @Composable -fun BitmapFromComposableSnippet() { +fun BitmapFromComposableFullSnippet() { val context = LocalContext.current val coroutineScope = rememberCoroutineScope() val snackbarHostState = remember { SnackbarHostState() } - val picture = remember { Picture() } + val graphicsLayer = rememberGraphicsLayer() val writeStorageAccessState = rememberMultiplePermissionsState( if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { @@ -104,14 +134,15 @@ fun BitmapFromComposableSnippet() { listOf(Manifest.permission.WRITE_EXTERNAL_STORAGE) } ) + // This logic should live in your ViewModel - trigger a side effect to invoke URI sharing. // checks permissions granted, and then saves the bitmap from a Picture that is already capturing content // and shares it with the default share sheet. fun shareBitmapFromComposable() { if (writeStorageAccessState.allPermissionsGranted) { coroutineScope.launch { - val bitmap = createBitmapFromPicture(picture) - val uri = bitmap.saveToDisk(context) + val bitmap = graphicsLayer.toImageBitmap() + val uri = bitmap.asAndroidBitmap().saveToDisk(context) shareBitmap(context, uri) } } else if (writeStorageAccessState.shouldShowRationale) { @@ -140,39 +171,22 @@ fun BitmapFromComposableSnippet() { } } ) { padding -> - // [START android_compose_draw_into_bitmap] Column( modifier = Modifier .padding(padding) .fillMaxSize() .drawWithCache { - // Example that shows how to redirect rendering to an Android Picture and then - // draw the picture into the original destination - val width = this.size.width.toInt() - val height = this.size.height.toInt() - onDrawWithContent { - val pictureCanvas = - androidx.compose.ui.graphics.Canvas( - picture.beginRecording( - width, - height - ) - ) - // requires at least 1.6.0-alpha01+ - draw(this, this.layoutDirection, pictureCanvas, this.size) { + graphicsLayer.record { this@onDrawWithContent.drawContent() } - picture.endRecording() - - drawIntoCanvas { canvas -> canvas.nativeCanvas.drawPicture(picture) } + drawLayer(graphicsLayer) } } ) { ScreenContentToCapture() } - // [END android_compose_draw_into_bitmap] } } @@ -207,25 +221,6 @@ private fun ScreenContentToCapture() { } } -private fun createBitmapFromPicture(picture: Picture): Bitmap { - // [START android_compose_draw_into_bitmap_convert_picture] - val bitmap = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { - Bitmap.createBitmap(picture) - } else { - val bitmap = Bitmap.createBitmap( - picture.width, - picture.height, - Bitmap.Config.ARGB_8888 - ) - val canvas = android.graphics.Canvas(bitmap) - canvas.drawColor(android.graphics.Color.WHITE) - canvas.drawPicture(picture) - bitmap - } - // [END android_compose_draw_into_bitmap_convert_picture] - return bitmap -} - private suspend fun Bitmap.saveToDisk(context: Context): Uri { val file = File( Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt index bc73afb1d..e2bf4c434 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt @@ -426,7 +426,7 @@ private fun CustomSnapDistance() { HorizontalPager( state = pagerState, pageSize = PageSize.Fixed(200.dp), - outOfBoundsPageCount = 10, + beyondViewportPageCount = 10, flingBehavior = fling ) { PagerSampleItem(page = it) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 49a7b25e5..0a47f7031 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -3,7 +3,8 @@ accompanist = "0.32.0" androidGradlePlugin = "8.2.2" androidx-activity-compose = "1.9.0-alpha03" androidx-appcompat = "1.6.1" -androidx-compose-bom = "2024.01.00" +androidx-compose-bom = "2024.04.01" +androidx-compose-ui-test = "1.7.0-alpha03" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" @@ -13,16 +14,16 @@ androidx-fragment-ktx = "1.6.2" androidx-glance-appwidget = "1.0.0" androidx-lifecycle-compose = "2.7.0" androidx-lifecycle-runtime-compose = "2.7.0" -androidx-navigation = "2.7.6" +androidx-navigation = "2.7.7" androidx-paging = "3.2.1" androidx-test = "1.5.0" androidx-test-espresso = "3.5.1" -androidxHiltNavigationCompose = "1.1.0" +androidxHiltNavigationCompose = "1.2.0" coil = "2.5.0" # @keep compileSdk = "34" compose-compiler = "1.5.4" -compose-latest = "1.7.0-alpha03" +compose-latest = "1.7.0-alpha07" coroutines = "1.7.3" google-maps = "18.2.0" gradle-versions = "0.51.0" @@ -66,7 +67,7 @@ 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" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } -androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.0-alpha04" +androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.0-alpha05" androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } From b365d6d70bc3b3d5b8e8791a77e40a85f430ecd7 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 29 Apr 2024 16:29:42 +0100 Subject: [PATCH 10/59] add shared element snippets --- .../animations/SharedElementSnippets.kt | 1459 +++++++++++++++++ .../compose/snippets/ui/theme/Color.kt | 6 + .../src/main/res/drawable/cupcake.jpg | Bin 0 -> 87777 bytes .../snippets/src/main/res/drawable/donut.jpeg | Bin 0 -> 65266 bytes .../src/main/res/drawable/eclair.jpeg | Bin 0 -> 99829 bytes .../snippets/src/main/res/drawable/froyo.jpeg | Bin 0 -> 75308 bytes .../src/main/res/drawable/gingerbread.jpg | Bin 0 -> 148964 bytes .../src/main/res/drawable/honeycomb.jpg | Bin 0 -> 77136 bytes 8 files changed, 1465 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/SharedElementSnippets.kt create mode 100644 compose/snippets/src/main/res/drawable/cupcake.jpg create mode 100644 compose/snippets/src/main/res/drawable/donut.jpeg create mode 100644 compose/snippets/src/main/res/drawable/eclair.jpeg create mode 100644 compose/snippets/src/main/res/drawable/froyo.jpeg create mode 100644 compose/snippets/src/main/res/drawable/gingerbread.jpg create mode 100644 compose/snippets/src/main/res/drawable/honeycomb.jpg diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/SharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/SharedElementSnippets.kt new file mode 100644 index 000000000..e79c3e7ba --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/SharedElementSnippets.kt @@ -0,0 +1,1459 @@ +@file:OptIn(ExperimentalSharedTransitionApi::class) +@file:Suppress("unused") + +package com.example.compose.snippets.animations + +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import androidx.annotation.DrawableRes +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.AnimatedVisibilityScope +import androidx.compose.animation.BoundsTransform +import androidx.compose.animation.EnterTransition +import androidx.compose.animation.ExitTransition +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.keyframes +import androidx.compose.animation.core.spring +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.horizontalScroll +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredHeightIn +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Create +import androidx.compose.material.icons.outlined.Favorite +import androidx.compose.material.icons.outlined.Share +import androidx.compose.material3.Icon +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalInspectionMode +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import androidx.navigation.navArgument +import coil.compose.AsyncImage +import coil.request.ImageRequest +import com.example.compose.snippets.R +import com.example.compose.snippets.ui.theme.LavenderLight +import com.example.compose.snippets.ui.theme.RoseLight + +private class SharedElementBasicUsage1 { + @Preview + // [START android_compose_animations_shared_element_start] + @Composable + private fun SharedElementApp() { + var showDetails by remember { + mutableStateOf(false) + } + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent(onShowDetails = { + showDetails = true + }) + } else { + DetailsContent(onBack = { + showDetails = false + }) + } + } + } + + @Composable + private fun MainContent(onShowDetails: () -> Unit) { + Row( + // [START_EXCLUDE] + modifier = Modifier + .padding(8.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text("Cupcake", fontSize = 21.sp) + } + } + + @Composable + private fun DetailsContent(modifier: Modifier = Modifier, onBack: () -> Unit) { + Column( + // [START_EXCLUDE] + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text("Cupcake", fontSize = 28.sp) + // [START_EXCLUDE] + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } + // [END android_compose_animations_shared_element_start] +} + +private class SharedElementBasicUsage2 { + @Preview + @Composable + private fun SharedElementApp() { + // [START android_compose_animations_shared_element_step1] + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + // [END android_compose_animations_shared_element_step1] + } + + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Row( + // [START_EXCLUDE] + modifier = Modifier + .padding(8.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text("Cupcake", fontSize = 21.sp) + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Column( + // [START_EXCLUDE] + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text("Cupcake", fontSize = 28.sp) + // [START_EXCLUDE] + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } +} + +private class SharedElementBasicUsage3 { + + @Preview + @Composable + private fun SharedElementApp() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + } + + // [START android_compose_animations_shared_element_step2] + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Row( + // [START_EXCLUDE] + modifier = Modifier + .padding(8.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + with(sharedTransitionScope) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 21.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + } + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Column( + // [START_EXCLUDE] + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + with(sharedTransitionScope) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 28.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + // [START_EXCLUDE] + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } + } + // [END android_compose_animations_shared_element_step2] +} + +private class SharedElementBasicUsage4 { + + @Preview + @Composable + private fun SharedElementApp() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + } + + // [START android_compose_animations_shared_element_shared_bounds] + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + with(sharedTransitionScope) { + Row( + modifier = Modifier + .padding(8.dp) + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut() + ) + // [START_EXCLUDE] + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + // [START_EXCLUDE] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 21.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + // [END_EXCLUDE] + } + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + with(sharedTransitionScope) { + Column( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut() + ) + // [START_EXCLUDE] + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + + ) { + // [START_EXCLUDE] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 28.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } + } + // [END android_compose_animations_shared_element_shared_bounds] +} + +private class SharedElementBoundsTransform { + @Preview + @Composable + private fun SharedElementApp() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + } + + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + with(sharedTransitionScope) { + Row( + modifier = Modifier + .padding(8.dp) + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut() + ) + // [START_EXCLUDE] + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + // [START_EXCLUDE] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = { _, _ -> + spring( + stiffness = Spring.StiffnessMediumLow, + dampingRatio = Spring.DampingRatioMediumBouncy + ) + } + ) + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 21.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + // [END_EXCLUDE] + } + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + with(sharedTransitionScope) { + Column( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut() + ) + // [START_EXCLUDE] + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + + ) { + // [START android_compose_shared_element_image_bounds_transform] + val imageBoundsTransform = BoundsTransform { initial, target -> + keyframes { + durationMillis = 500 + initial at 0 + Rect( + target.left + 100, + target.top, + target.right + 100, + target.bottom + ) at 300 + } + } + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = imageBoundsTransform + ) + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + // [END android_compose_shared_element_image_bounds_transform] + Text( + "Cupcake", fontSize = 28.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + } + } + } +} + +@Preview +@Composable +private fun SharedElement_Clipping() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + Row( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = this@AnimatedContent + ) + .background(Color.Green.copy(alpha = 0.5f)) + .padding(8.dp) + .clickable { + showDetails = true + } + ) { + // [START android_compose_animations_shared_element_clipping] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(100.dp) + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = this@AnimatedContent + ) + .clip(RoundedCornerShape(16.dp)), + contentScale = ContentScale.Crop + ) + // [END android_compose_animations_shared_element_clipping] + Text( + "Lorem ipsum dolor sit amet.", fontSize = 21.sp, + modifier = Modifier.sharedElement( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = this@AnimatedContent, + + ) + ) + } + } else { + Column( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = this@AnimatedContent + ) + .background(Color.Green.copy(alpha = 0.7f)) + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .clickable { + showDetails = false + } + + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(200.dp) + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = this@AnimatedContent + ) + .clip(RoundedCornerShape(16.dp)), + contentScale = ContentScale.Crop + ) + Text( + "Lorem ipsum dolor sit amet.", fontSize = 21.sp, + modifier = Modifier.sharedElement( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = this@AnimatedContent + ) + ) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + } + } + } + } +} + +@Preview +@Composable +private fun SharedElement_SkipLookaheadSize() { + // Nested shared bounds sample. + val selectionColor = Color(0xff3367ba) + var expanded by remember { mutableStateOf(true) } + SharedTransitionLayout( + Modifier + .fillMaxSize() + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + expanded = !expanded + } + .background(Color(0x88000000)) + ) { + AnimatedVisibility( + visible = expanded, + enter = EnterTransition.None, + exit = ExitTransition.None + ) { + Box(modifier = Modifier.fillMaxSize()) { + Surface( + Modifier + .align(Alignment.BottomCenter) + .padding(20.dp) + .sharedBounds( + rememberSharedContentState(key = "container"), + this@AnimatedVisibility + ) + .requiredHeightIn(max = 60.dp), + shape = RoundedCornerShape(50), + ) { + Row( + Modifier + .padding(10.dp) + // By using Modifier.skipToLookaheadSize(), we are telling the layout + // system to layout the children of this node as if the animations had + // all finished. This avoid re-laying out the Row with animated width, + // which is _sometimes_ desirable. Try removing this modifier and + // observe the effect. + .skipToLookaheadSize() + ) { + Icon( + Icons.Outlined.Share, + contentDescription = "Share", + modifier = Modifier.padding( + top = 10.dp, + bottom = 10.dp, + start = 10.dp, + end = 20.dp + ) + ) + Icon( + Icons.Outlined.Favorite, + contentDescription = "Favorite", + modifier = Modifier.padding( + top = 10.dp, + bottom = 10.dp, + start = 10.dp, + end = 20.dp + ) + ) + Icon( + Icons.Outlined.Create, + contentDescription = "Create", + tint = Color.White, + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "icon_background"), + this@AnimatedVisibility + ) + .background(selectionColor, RoundedCornerShape(50)) + .padding( + top = 10.dp, + bottom = 10.dp, + start = 20.dp, + end = 20.dp + ) + .sharedElement( + rememberSharedContentState(key = "icon"), + this@AnimatedVisibility + ) + ) + } + } + } + } + AnimatedVisibility( + visible = !expanded, + enter = EnterTransition.None, + exit = ExitTransition.None + ) { + Box(modifier = Modifier.fillMaxSize()) { + Surface( + Modifier + .align(Alignment.BottomEnd) + .padding(30.dp) + .sharedBounds( + rememberSharedContentState(key = "container"), + this@AnimatedVisibility, + enter = EnterTransition.None, + ) + .sharedBounds( + rememberSharedContentState(key = "icon_background"), + this@AnimatedVisibility, + enter = EnterTransition.None, + exit = ExitTransition.None + ), + shape = RoundedCornerShape(30.dp), + color = selectionColor + ) { + Icon( + Icons.Outlined.Create, + contentDescription = "Create", + tint = Color.White, + modifier = Modifier + .padding(30.dp) + .size(40.dp) + .sharedElement( + rememberSharedContentState(key = "icon"), + this@AnimatedVisibility + ) + ) + } + } + } + } +} + +@Preview +@Composable +private fun SharedElement_ManualVisibleControl() { + // [START android_compose_shared_element_manual_control] + var selectFirst by remember { mutableStateOf(true) } + val key = remember { Any() } + SharedTransitionLayout( + Modifier + .fillMaxSize() + .padding(10.dp) + .clickable { + selectFirst = !selectFirst + } + ) { + Box( + Modifier + .sharedElementWithCallerManagedVisibility( + rememberSharedContentState(key = key), + !selectFirst, + boundsTransform = boundsTransform + ) + .background(Color.Red) + .size(100.dp) + ) { + Text(if (!selectFirst) "false" else "true", color = Color.White) + } + Box( + Modifier + .offset(180.dp, 180.dp) + .sharedElementWithCallerManagedVisibility( + rememberSharedContentState( + key = key, + ), + selectFirst, + boundsTransform = boundsTransform + ) + .alpha(0.5f) + .background(Color.Blue) + .size(180.dp) + ) { + Text(if (selectFirst) "false" else "true", color = Color.White) + } + } + // [END android_compose_shared_element_manual_control] +} + +private val boundsTransform = BoundsTransform { initial, target -> + // Move vertically first then horizontally + keyframes { + durationMillis = 500 + initial at 0 + Rect(initial.left, target.top, initial.left + target.width, target.bottom) at 300 + } +} + +val listSnacks = listOf( + Snack("Cupcake", "", R.drawable.cupcake), + Snack("Donut", "", R.drawable.donut), + Snack("Eclair", "", R.drawable.eclair), + Snack("Froyo", "", R.drawable.froyo), + Snack("Gingerbread", "", R.drawable.gingerbread), + Snack("Honeycomb", "", R.drawable.honeycomb), +) + +@Preview +@Composable +fun SharedElement_PredictiveBack() { + // [START android_compose_shared_element_predictive_back] + SharedTransitionLayout { + val boundsTransform = { _: Rect, _: Rect -> tween(1400) } + + val navController = rememberNavController() + NavHost( + navController = navController, + startDestination = "home" + ) { + + composable("home") { + LazyColumn( + modifier = Modifier + .fillMaxSize() + .padding(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + itemsIndexed(listSnacks) { index, item -> + Row( + Modifier.clickable { + navController.navigate("details/$index") + } + ) { + Spacer(modifier = Modifier.width(8.dp)) + Image( + painterResource(id = item.image), + contentDescription = item.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image-$index"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform + ) + .size(100.dp) + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + item.name, fontSize = 18.sp, + modifier = Modifier + .align(Alignment.CenterVertically) + .sharedElement( + rememberSharedContentState(key = "text-$index"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform + ) + ) + } + } + } + } + composable( + "details/{item}", + arguments = listOf(navArgument("item") { type = NavType.IntType }) + ) { backStackEntry -> + val id = backStackEntry.arguments?.getInt("item") + val snack = listSnacks[id!!] + Column( + Modifier + .fillMaxSize() + .clickable { + navController.navigate("home") + } + ) { + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image-$id"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform + ) + .aspectRatio(1f) + .fillMaxWidth() + ) + Text( + snack.name, fontSize = 18.sp, + modifier = + Modifier + .sharedElement( + rememberSharedContentState(key = "text-$id"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform + ) + .fillMaxWidth() + ) + } + } + } + } +// [END android_compose_shared_element_predictive_back] +} + +data class Snack( + val name: String, + val description: String, + @DrawableRes val image: Int +) + +@Preview +@Composable +private fun SkipToLookahead() { +// Nested shared bounds sample. + val selectionColor = Color(0xff3367ba) + var expanded by remember { mutableStateOf(true) } + SharedTransitionLayout( + Modifier + .fillMaxSize() + .clickable { + expanded = !expanded + } + .background(Color(0x88000000)) + ) { + AnimatedVisibility( + visible = expanded, + enter = EnterTransition.None, + exit = ExitTransition.None + ) { + Box(modifier = Modifier.fillMaxSize()) { + Surface( + Modifier + .align(Alignment.BottomCenter) + .padding(20.dp) + .sharedBounds( + rememberSharedContentState(key = "container"), + this@AnimatedVisibility + ) + .requiredHeightIn(max = 60.dp), + shape = RoundedCornerShape(50), + ) { + Row( + Modifier + .padding(10.dp) + // By using Modifier.skipToLookaheadSize(), we are telling the layout + // system to layout the children of this node as if the animations had + // all finished. This avoid re-laying out the Row with animated width, + // which is _sometimes_ desirable. Try removing this modifier and + // observe the effect. + .skipToLookaheadSize() + ) { + Icon( + Icons.Outlined.Share, + contentDescription = "Share", + modifier = Modifier.padding( + top = 10.dp, + bottom = 10.dp, + start = 10.dp, + end = 20.dp + ) + ) + Icon( + Icons.Outlined.Favorite, + contentDescription = "Favorite", + modifier = Modifier.padding( + top = 10.dp, + bottom = 10.dp, + start = 10.dp, + end = 20.dp + ) + ) + Icon( + Icons.Outlined.Create, + contentDescription = "Create", + tint = Color.White, + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "icon_background"), + this@AnimatedVisibility + ) + .background(selectionColor, RoundedCornerShape(50)) + .padding( + top = 10.dp, + bottom = 10.dp, + start = 20.dp, + end = 20.dp + ) + .sharedElement( + rememberSharedContentState(key = "icon"), + this@AnimatedVisibility + ) + ) + } + } + } + } + AnimatedVisibility( + visible = !expanded, + enter = EnterTransition.None, + exit = ExitTransition.None + ) { + Box(modifier = Modifier.fillMaxSize()) { + Surface( + Modifier + .align(Alignment.BottomEnd) + .padding(30.dp) + .sharedBounds( + rememberSharedContentState(key = "container"), + this@AnimatedVisibility, + enter = EnterTransition.None, + ) + .sharedBounds( + rememberSharedContentState(key = "icon_background"), + this@AnimatedVisibility, + enter = EnterTransition.None, + exit = ExitTransition.None + ), + shape = RoundedCornerShape(30.dp), + color = selectionColor + ) { + Icon( + Icons.Outlined.Create, + contentDescription = "Create", + tint = Color.White, + modifier = Modifier + .padding(30.dp) + .size(40.dp) + .sharedElement( + rememberSharedContentState(key = "icon"), + this@AnimatedVisibility + ) + ) + } + } + } + } +} + +@Preview +@Composable +private fun SharedAsyncImage() { + SharedTransitionLayout { + AnimatedVisibility(visible = true) { + // [START android_compose_shared_element_async_image_tip] + AsyncImage( + model = ImageRequest.Builder(LocalContext.current) + .data("your-image-url") + .crossfade(true) + .build(), + placeholder = null, + contentDescription = null, + modifier = Modifier + .size(120.dp) + .sharedBounds( + rememberSharedContentState( + key = "image-key" + ), + animatedVisibilityScope = this, + exit = ExitTransition.None + ) + ) + // [END android_compose_shared_element_async_image_tip] + } + } +} + +@Composable +fun debugPlaceholder(@DrawableRes debugPreview: Int) = + if (LocalInspectionMode.current) { + painterResource(id = debugPreview) + } else { + null + } + +@Preview +@Composable +private fun SharedElementTypicalUseText() { + SharedTransitionLayout { + AnimatedVisibility(visible = true) { + // [START android_compose_shared_element_text_tip] + Text( + text = "This is an example of how to share text", + modifier = Modifier + .wrapContentWidth() + .sharedBounds( + rememberSharedContentState( + key = "shared Text" + ), + animatedVisibilityScope = this, + enter = fadeIn() + scaleInSharedContentToBounds(), + exit = fadeOut() + scaleOutSharedContentToBounds() + ) + ) + // [END android_compose_shared_element_text_tip] + } + } +} + +@Preview +@Composable +private fun UnmatchedBoundsExample() { + // [START android_compose_animation_shared_element_bounds_unmatched] + var selectFirst by remember { mutableStateOf(true) } + val key = remember { Any() } + SharedTransitionLayout( + Modifier + .fillMaxSize() + .padding(10.dp) + .clickable { + selectFirst = !selectFirst + } + ) { + AnimatedContent(targetState = selectFirst, label = "AnimatedContent") { targetState -> + if (targetState) { + Box( + Modifier + .padding(12.dp) + .sharedBounds( + rememberSharedContentState(key = key), + animatedVisibilityScope = this@AnimatedContent + ) + .border(2.dp, Color.Red) + ) { + Text( + "Hello", + fontSize = 20.sp + ) + } + } else { + Box( + Modifier + .offset(180.dp, 180.dp) + .sharedBounds( + rememberSharedContentState( + key = key, + ), + animatedVisibilityScope = this@AnimatedContent + ) + .border(2.dp, Color.Red) + .padding(12.dp) + + ) { + Text( + "Hello", + fontSize = 36.sp + ) + } + } + } + } + // [END android_compose_animation_shared_element_bounds_unmatched] +} + +@Preview +@Composable +fun PlaceholderSizeAnimated_Demo() { + // This demo shows how other items in a layout can respond to shared elements changing in size. + // [START android_compose_shared_element_placeholder_size] + SharedTransitionLayout { + val boundsTransform = { _: Rect, _: Rect -> tween(1000) } + + val navController = rememberNavController() + NavHost( + navController = navController, + startDestination = "home" + ) { + composable("home", enterTransition = { fadeIn() }, exitTransition = { fadeOut() }) { + Column { + Row(modifier = Modifier.horizontalScroll(rememberScrollState())) { + (listSnacks).forEachIndexed { index, snack -> + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .padding(8.dp) + .sharedBounds( + rememberSharedContentState(key = "image-${snack.name}"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform, + placeHolderSize = SharedTransitionScope.PlaceHolderSize.animatedSize + ) + .clickable { + navController.navigate("details/$index") + } + .height(180.dp) + .clip(RoundedCornerShape(8.dp)) + .aspectRatio(9f / 16f) + + ) + } + } + Text("Nearby snacks") + Row(modifier = Modifier.horizontalScroll(rememberScrollState())) { + (listSnacks).forEach { snack -> + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .height(200.dp) + .aspectRatio(16f / 9f) + .padding(8.dp) + ) + } + } + } + } + composable( + "details/{id}", + arguments = listOf(navArgument("id") { type = NavType.IntType }), + enterTransition = { fadeIn() }, exitTransition = { fadeOut() } + ) { backStackEntry -> + val id = backStackEntry.arguments?.getInt("id") + val snack = listSnacks[id!!] + Column( + Modifier + .fillMaxSize() + .clickable { + navController.navigateUp() + } + ) { + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "image-${snack.name}"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform, + placeHolderSize = SharedTransitionScope.PlaceHolderSize.animatedSize + ) + .clip(RoundedCornerShape(8.dp)) + .aspectRatio(9f / 16f) + .fillMaxWidth() + ) + } + } + } + } +// [END android_compose_shared_element_placeholder_size] +} \ No newline at end of file diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt b/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt index 21909a8cb..6c6006ead 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt @@ -25,3 +25,9 @@ val Pink80 = Color(0xFFEFB8C8) val Purple40 = Color(0xFF6650a4) val PurpleGrey40 = Color(0xFF625b71) val Pink40 = Color(0xFF7D5260) + +val LavenderDark = Color(0xff23009e) +val LavenderLight = Color(0xFFDDBEFC) + +val RoseDark = Color(0xffaf0060) +val RoseLight = Color(0xFFFFAFC9) diff --git a/compose/snippets/src/main/res/drawable/cupcake.jpg b/compose/snippets/src/main/res/drawable/cupcake.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0696e8a645a5ce232dc591717684b51f54893fa3 GIT binary patch literal 87777 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 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable/donut.jpeg b/compose/snippets/src/main/res/drawable/donut.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..57d0199f29468f276c0ffddd077756db6b64b2d5 GIT binary patch literal 65266 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 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable/eclair.jpeg b/compose/snippets/src/main/res/drawable/eclair.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..6ec767a0f2dda826aeb5547df75aacbdfd8d6739 GIT binary patch literal 99829 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 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable/froyo.jpeg b/compose/snippets/src/main/res/drawable/froyo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..f3126d5077c9961fe6c137368e44c5472c892459 GIT binary patch literal 75308 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�`UW4& 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 VU&Hj&vMjlep?(*ik^can|Jmjh5<>t0 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable/honeycomb.jpg b/compose/snippets/src/main/res/drawable/honeycomb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..94c892b576b5c3842db3cb99d0f5bebaf04299a3 GIT binary patch literal 77136 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/H!HGKBZ;?%8 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 z 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 Date: Mon, 29 Apr 2024 15:33:31 +0000 Subject: [PATCH 11/59] Apply Spotless --- .../animations/SharedElementSnippets.kt | 68 ++++++++++++------- 1 file changed, 42 insertions(+), 26 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/SharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/SharedElementSnippets.kt index e79c3e7ba..41c13f3b6 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/SharedElementSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/SharedElementSnippets.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + @file:OptIn(ExperimentalSharedTransitionApi::class) @file:Suppress("unused") @@ -173,10 +189,10 @@ private class SharedElementBasicUsage1 { // [START_EXCLUDE] Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) // [END_EXCLUDE] } @@ -280,10 +296,10 @@ private class SharedElementBasicUsage2 { // [START_EXCLUDE] Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) // [END_EXCLUDE] } @@ -410,10 +426,10 @@ private class SharedElementBasicUsage3 { // [START_EXCLUDE] Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) // [END_EXCLUDE] } @@ -557,10 +573,10 @@ private class SharedElementBasicUsage4 { ) Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) // [END_EXCLUDE] } @@ -722,10 +738,10 @@ private class SharedElementBoundsTransform { ) Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) } } @@ -776,7 +792,7 @@ private fun SharedElement_Clipping() { rememberSharedContentState(key = "title"), animatedVisibilityScope = this@AnimatedContent, - ) + ) ) } } else { @@ -814,10 +830,10 @@ private fun SharedElement_Clipping() { ) Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) } } @@ -1456,4 +1472,4 @@ fun PlaceholderSizeAnimated_Demo() { } } // [END android_compose_shared_element_placeholder_size] -} \ No newline at end of file +} From f45f8adb99cae42411f4ff7aa77c15c261bc0bff Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 29 Apr 2024 17:16:22 +0100 Subject: [PATCH 12/59] Split snippets into different files. --- .../animations/SharedElementSnippets.kt | 1459 ----------------- .../BasicSharedElementSnippets.kt | 467 ++++++ .../CustomizeSharedElementsSnippets.kt | 549 +++++++ .../sharedelement/SharedBoundsSnippets.kt | 185 +++ .../SharedElementCommonUseCaseSnippets.kt | 84 + .../SharedElementsWithNavigationSnippets.kt | 152 ++ 6 files changed, 1437 insertions(+), 1459 deletions(-) delete mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/SharedElementSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/SharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/SharedElementSnippets.kt deleted file mode 100644 index e79c3e7ba..000000000 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/SharedElementSnippets.kt +++ /dev/null @@ -1,1459 +0,0 @@ -@file:OptIn(ExperimentalSharedTransitionApi::class) -@file:Suppress("unused") - -package com.example.compose.snippets.animations - -/* - * Copyright 2024 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -import androidx.annotation.DrawableRes -import androidx.compose.animation.AnimatedContent -import androidx.compose.animation.AnimatedVisibility -import androidx.compose.animation.AnimatedVisibilityScope -import androidx.compose.animation.BoundsTransform -import androidx.compose.animation.EnterTransition -import androidx.compose.animation.ExitTransition -import androidx.compose.animation.ExperimentalSharedTransitionApi -import androidx.compose.animation.SharedTransitionLayout -import androidx.compose.animation.SharedTransitionScope -import androidx.compose.animation.core.Spring -import androidx.compose.animation.core.keyframes -import androidx.compose.animation.core.spring -import androidx.compose.animation.core.tween -import androidx.compose.animation.fadeIn -import androidx.compose.animation.fadeOut -import androidx.compose.foundation.Image -import androidx.compose.foundation.background -import androidx.compose.foundation.border -import androidx.compose.foundation.clickable -import androidx.compose.foundation.horizontalScroll -import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.Box -import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer -import androidx.compose.foundation.layout.aspectRatio -import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.offset -import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.layout.requiredHeightIn -import androidx.compose.foundation.layout.size -import androidx.compose.foundation.layout.width -import androidx.compose.foundation.layout.wrapContentWidth -import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.foundation.lazy.itemsIndexed -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.shape.CircleShape -import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.outlined.Create -import androidx.compose.material.icons.outlined.Favorite -import androidx.compose.material.icons.outlined.Share -import androidx.compose.material3.Icon -import androidx.compose.material3.Surface -import androidx.compose.material3.Text -import androidx.compose.runtime.Composable -import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf -import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue -import androidx.compose.ui.Alignment -import androidx.compose.ui.Modifier -import androidx.compose.ui.draw.alpha -import androidx.compose.ui.draw.clip -import androidx.compose.ui.geometry.Rect -import androidx.compose.ui.graphics.Color -import androidx.compose.ui.layout.ContentScale -import androidx.compose.ui.platform.LocalContext -import androidx.compose.ui.platform.LocalInspectionMode -import androidx.compose.ui.res.painterResource -import androidx.compose.ui.tooling.preview.Preview -import androidx.compose.ui.unit.dp -import androidx.compose.ui.unit.sp -import androidx.navigation.NavType -import androidx.navigation.compose.NavHost -import androidx.navigation.compose.composable -import androidx.navigation.compose.rememberNavController -import androidx.navigation.navArgument -import coil.compose.AsyncImage -import coil.request.ImageRequest -import com.example.compose.snippets.R -import com.example.compose.snippets.ui.theme.LavenderLight -import com.example.compose.snippets.ui.theme.RoseLight - -private class SharedElementBasicUsage1 { - @Preview - // [START android_compose_animations_shared_element_start] - @Composable - private fun SharedElementApp() { - var showDetails by remember { - mutableStateOf(false) - } - AnimatedContent( - showDetails, - label = "basic_transition" - ) { targetState -> - if (!targetState) { - MainContent(onShowDetails = { - showDetails = true - }) - } else { - DetailsContent(onBack = { - showDetails = false - }) - } - } - } - - @Composable - private fun MainContent(onShowDetails: () -> Unit) { - Row( - // [START_EXCLUDE] - modifier = Modifier - .padding(8.dp) - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(LavenderLight, RoundedCornerShape(8.dp)) - .clickable { - onShowDetails() - } - .padding(8.dp) - // [END_EXCLUDE] - ) { - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .size(100.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - Text("Cupcake", fontSize = 21.sp) - } - } - - @Composable - private fun DetailsContent(modifier: Modifier = Modifier, onBack: () -> Unit) { - Column( - // [START_EXCLUDE] - modifier = Modifier - .padding(top = 200.dp, start = 16.dp, end = 16.dp) - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(RoseLight, RoundedCornerShape(8.dp)) - .clickable { - onBack() - } - .padding(8.dp) - // [END_EXCLUDE] - ) { - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .size(200.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - Text("Cupcake", fontSize = 28.sp) - // [START_EXCLUDE] - Text( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" - ) - // [END_EXCLUDE] - } - } - // [END android_compose_animations_shared_element_start] -} - -private class SharedElementBasicUsage2 { - @Preview - @Composable - private fun SharedElementApp() { - // [START android_compose_animations_shared_element_step1] - var showDetails by remember { - mutableStateOf(false) - } - SharedTransitionLayout { - AnimatedContent( - showDetails, - label = "basic_transition" - ) { targetState -> - if (!targetState) { - MainContent( - onShowDetails = { - showDetails = true - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } else { - DetailsContent( - onBack = { - showDetails = false - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } - } - } - // [END android_compose_animations_shared_element_step1] - } - - @Composable - private fun MainContent( - onShowDetails: () -> Unit, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - Row( - // [START_EXCLUDE] - modifier = Modifier - .padding(8.dp) - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(LavenderLight, RoundedCornerShape(8.dp)) - .clickable { - onShowDetails() - } - .padding(8.dp) - // [END_EXCLUDE] - ) { - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .size(100.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - Text("Cupcake", fontSize = 21.sp) - } - } - - @Composable - private fun DetailsContent( - modifier: Modifier = Modifier, - onBack: () -> Unit, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - Column( - // [START_EXCLUDE] - modifier = Modifier - .padding(top = 200.dp, start = 16.dp, end = 16.dp) - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(RoseLight, RoundedCornerShape(8.dp)) - .clickable { - onBack() - } - .padding(8.dp) - // [END_EXCLUDE] - ) { - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .size(200.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - Text("Cupcake", fontSize = 28.sp) - // [START_EXCLUDE] - Text( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" - ) - // [END_EXCLUDE] - } - } -} - -private class SharedElementBasicUsage3 { - - @Preview - @Composable - private fun SharedElementApp() { - var showDetails by remember { - mutableStateOf(false) - } - SharedTransitionLayout { - AnimatedContent( - showDetails, - label = "basic_transition" - ) { targetState -> - if (!targetState) { - MainContent( - onShowDetails = { - showDetails = true - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } else { - DetailsContent( - onBack = { - showDetails = false - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } - } - } - } - - // [START android_compose_animations_shared_element_step2] - @Composable - private fun MainContent( - onShowDetails: () -> Unit, - modifier: Modifier = Modifier, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - Row( - // [START_EXCLUDE] - modifier = Modifier - .padding(8.dp) - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(LavenderLight, RoundedCornerShape(8.dp)) - .clickable { - onShowDetails() - } - .padding(8.dp) - // [END_EXCLUDE] - ) { - with(sharedTransitionScope) { - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .sharedElement( - rememberSharedContentState(key = "image"), - animatedVisibilityScope = animatedVisibilityScope - ) - .size(100.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - Text( - "Cupcake", fontSize = 21.sp, - modifier = Modifier.sharedBounds( - rememberSharedContentState(key = "title"), - animatedVisibilityScope = animatedVisibilityScope - ) - ) - } - } - } - - @Composable - private fun DetailsContent( - modifier: Modifier = Modifier, - onBack: () -> Unit, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - Column( - // [START_EXCLUDE] - modifier = Modifier - .padding(top = 200.dp, start = 16.dp, end = 16.dp) - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(RoseLight, RoundedCornerShape(8.dp)) - .clickable { - onBack() - } - .padding(8.dp) - // [END_EXCLUDE] - ) { - with(sharedTransitionScope) { - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .sharedElement( - rememberSharedContentState(key = "image"), - animatedVisibilityScope = animatedVisibilityScope - ) - .size(200.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - Text( - "Cupcake", fontSize = 28.sp, - modifier = Modifier.sharedBounds( - rememberSharedContentState(key = "title"), - animatedVisibilityScope = animatedVisibilityScope - ) - ) - // [START_EXCLUDE] - Text( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" - ) - // [END_EXCLUDE] - } - } - } - // [END android_compose_animations_shared_element_step2] -} - -private class SharedElementBasicUsage4 { - - @Preview - @Composable - private fun SharedElementApp() { - var showDetails by remember { - mutableStateOf(false) - } - SharedTransitionLayout { - AnimatedContent( - showDetails, - label = "basic_transition" - ) { targetState -> - if (!targetState) { - MainContent( - onShowDetails = { - showDetails = true - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } else { - DetailsContent( - onBack = { - showDetails = false - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } - } - } - } - - // [START android_compose_animations_shared_element_shared_bounds] - @Composable - private fun MainContent( - onShowDetails: () -> Unit, - modifier: Modifier = Modifier, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - with(sharedTransitionScope) { - Row( - modifier = Modifier - .padding(8.dp) - .sharedBounds( - rememberSharedContentState(key = "bounds"), - animatedVisibilityScope = animatedVisibilityScope, - enter = fadeIn(), - exit = fadeOut() - ) - // [START_EXCLUDE] - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(LavenderLight, RoundedCornerShape(8.dp)) - .clickable { - onShowDetails() - } - .padding(8.dp) - // [END_EXCLUDE] - ) { - // [START_EXCLUDE] - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .sharedElement( - rememberSharedContentState(key = "image"), - animatedVisibilityScope = animatedVisibilityScope - ) - .size(100.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - Text( - "Cupcake", fontSize = 21.sp, - modifier = Modifier.sharedBounds( - rememberSharedContentState(key = "title"), - animatedVisibilityScope = animatedVisibilityScope - ) - ) - // [END_EXCLUDE] - } - } - } - - @Composable - private fun DetailsContent( - modifier: Modifier = Modifier, - onBack: () -> Unit, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - with(sharedTransitionScope) { - Column( - modifier = Modifier - .sharedBounds( - rememberSharedContentState(key = "bounds"), - animatedVisibilityScope = animatedVisibilityScope, - enter = fadeIn(), - exit = fadeOut() - ) - // [START_EXCLUDE] - .padding(top = 200.dp, start = 16.dp, end = 16.dp) - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(RoseLight, RoundedCornerShape(8.dp)) - .clickable { - onBack() - } - .padding(8.dp) - // [END_EXCLUDE] - - ) { - // [START_EXCLUDE] - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .sharedElement( - rememberSharedContentState(key = "image"), - animatedVisibilityScope = animatedVisibilityScope - ) - .size(200.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - Text( - "Cupcake", fontSize = 28.sp, - modifier = Modifier.sharedBounds( - rememberSharedContentState(key = "title"), - animatedVisibilityScope = animatedVisibilityScope - ) - ) - Text( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" - ) - // [END_EXCLUDE] - } - } - } - // [END android_compose_animations_shared_element_shared_bounds] -} - -private class SharedElementBoundsTransform { - @Preview - @Composable - private fun SharedElementApp() { - var showDetails by remember { - mutableStateOf(false) - } - SharedTransitionLayout { - AnimatedContent( - showDetails, - label = "basic_transition" - ) { targetState -> - if (!targetState) { - MainContent( - onShowDetails = { - showDetails = true - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } else { - DetailsContent( - onBack = { - showDetails = false - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } - } - } - } - - @Composable - private fun MainContent( - onShowDetails: () -> Unit, - modifier: Modifier = Modifier, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - with(sharedTransitionScope) { - Row( - modifier = Modifier - .padding(8.dp) - .sharedBounds( - rememberSharedContentState(key = "bounds"), - animatedVisibilityScope = animatedVisibilityScope, - enter = fadeIn(), - exit = fadeOut() - ) - // [START_EXCLUDE] - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(LavenderLight, RoundedCornerShape(8.dp)) - .clickable { - onShowDetails() - } - .padding(8.dp) - // [END_EXCLUDE] - ) { - // [START_EXCLUDE] - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .sharedElement( - rememberSharedContentState(key = "image"), - animatedVisibilityScope = animatedVisibilityScope, - boundsTransform = { _, _ -> - spring( - stiffness = Spring.StiffnessMediumLow, - dampingRatio = Spring.DampingRatioMediumBouncy - ) - } - ) - .size(100.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - Text( - "Cupcake", fontSize = 21.sp, - modifier = Modifier.sharedBounds( - rememberSharedContentState(key = "title"), - animatedVisibilityScope = animatedVisibilityScope - ) - ) - // [END_EXCLUDE] - } - } - } - - @Composable - private fun DetailsContent( - modifier: Modifier = Modifier, - onBack: () -> Unit, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - with(sharedTransitionScope) { - Column( - modifier = Modifier - .sharedBounds( - rememberSharedContentState(key = "bounds"), - animatedVisibilityScope = animatedVisibilityScope, - enter = fadeIn(), - exit = fadeOut() - ) - // [START_EXCLUDE] - .padding(top = 200.dp, start = 16.dp, end = 16.dp) - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(RoseLight, RoundedCornerShape(8.dp)) - .clickable { - onBack() - } - .padding(8.dp) - // [END_EXCLUDE] - - ) { - // [START android_compose_shared_element_image_bounds_transform] - val imageBoundsTransform = BoundsTransform { initial, target -> - keyframes { - durationMillis = 500 - initial at 0 - Rect( - target.left + 100, - target.top, - target.right + 100, - target.bottom - ) at 300 - } - } - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .sharedElement( - rememberSharedContentState(key = "image"), - animatedVisibilityScope = animatedVisibilityScope, - boundsTransform = imageBoundsTransform - ) - .size(200.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - // [END android_compose_shared_element_image_bounds_transform] - Text( - "Cupcake", fontSize = 28.sp, - modifier = Modifier.sharedBounds( - rememberSharedContentState(key = "title"), - animatedVisibilityScope = animatedVisibilityScope - ) - ) - Text( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" - ) - } - } - } -} - -@Preview -@Composable -private fun SharedElement_Clipping() { - var showDetails by remember { - mutableStateOf(false) - } - SharedTransitionLayout { - AnimatedContent( - showDetails, - label = "basic_transition" - ) { targetState -> - if (!targetState) { - Row( - modifier = Modifier - .sharedBounds( - rememberSharedContentState(key = "bounds"), - animatedVisibilityScope = this@AnimatedContent - ) - .background(Color.Green.copy(alpha = 0.5f)) - .padding(8.dp) - .clickable { - showDetails = true - } - ) { - // [START android_compose_animations_shared_element_clipping] - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .size(100.dp) - .sharedElement( - rememberSharedContentState(key = "image"), - animatedVisibilityScope = this@AnimatedContent - ) - .clip(RoundedCornerShape(16.dp)), - contentScale = ContentScale.Crop - ) - // [END android_compose_animations_shared_element_clipping] - Text( - "Lorem ipsum dolor sit amet.", fontSize = 21.sp, - modifier = Modifier.sharedElement( - rememberSharedContentState(key = "title"), - animatedVisibilityScope = this@AnimatedContent, - - ) - ) - } - } else { - Column( - modifier = Modifier - .sharedBounds( - rememberSharedContentState(key = "bounds"), - animatedVisibilityScope = this@AnimatedContent - ) - .background(Color.Green.copy(alpha = 0.7f)) - .padding(top = 200.dp, start = 16.dp, end = 16.dp) - .clickable { - showDetails = false - } - - ) { - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .size(200.dp) - .sharedElement( - rememberSharedContentState(key = "image"), - animatedVisibilityScope = this@AnimatedContent - ) - .clip(RoundedCornerShape(16.dp)), - contentScale = ContentScale.Crop - ) - Text( - "Lorem ipsum dolor sit amet.", fontSize = 21.sp, - modifier = Modifier.sharedElement( - rememberSharedContentState(key = "title"), - animatedVisibilityScope = this@AnimatedContent - ) - ) - Text( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" - ) - } - } - } - } -} - -@Preview -@Composable -private fun SharedElement_SkipLookaheadSize() { - // Nested shared bounds sample. - val selectionColor = Color(0xff3367ba) - var expanded by remember { mutableStateOf(true) } - SharedTransitionLayout( - Modifier - .fillMaxSize() - .clickable( - interactionSource = remember { MutableInteractionSource() }, - indication = null - ) { - expanded = !expanded - } - .background(Color(0x88000000)) - ) { - AnimatedVisibility( - visible = expanded, - enter = EnterTransition.None, - exit = ExitTransition.None - ) { - Box(modifier = Modifier.fillMaxSize()) { - Surface( - Modifier - .align(Alignment.BottomCenter) - .padding(20.dp) - .sharedBounds( - rememberSharedContentState(key = "container"), - this@AnimatedVisibility - ) - .requiredHeightIn(max = 60.dp), - shape = RoundedCornerShape(50), - ) { - Row( - Modifier - .padding(10.dp) - // By using Modifier.skipToLookaheadSize(), we are telling the layout - // system to layout the children of this node as if the animations had - // all finished. This avoid re-laying out the Row with animated width, - // which is _sometimes_ desirable. Try removing this modifier and - // observe the effect. - .skipToLookaheadSize() - ) { - Icon( - Icons.Outlined.Share, - contentDescription = "Share", - modifier = Modifier.padding( - top = 10.dp, - bottom = 10.dp, - start = 10.dp, - end = 20.dp - ) - ) - Icon( - Icons.Outlined.Favorite, - contentDescription = "Favorite", - modifier = Modifier.padding( - top = 10.dp, - bottom = 10.dp, - start = 10.dp, - end = 20.dp - ) - ) - Icon( - Icons.Outlined.Create, - contentDescription = "Create", - tint = Color.White, - modifier = Modifier - .sharedBounds( - rememberSharedContentState(key = "icon_background"), - this@AnimatedVisibility - ) - .background(selectionColor, RoundedCornerShape(50)) - .padding( - top = 10.dp, - bottom = 10.dp, - start = 20.dp, - end = 20.dp - ) - .sharedElement( - rememberSharedContentState(key = "icon"), - this@AnimatedVisibility - ) - ) - } - } - } - } - AnimatedVisibility( - visible = !expanded, - enter = EnterTransition.None, - exit = ExitTransition.None - ) { - Box(modifier = Modifier.fillMaxSize()) { - Surface( - Modifier - .align(Alignment.BottomEnd) - .padding(30.dp) - .sharedBounds( - rememberSharedContentState(key = "container"), - this@AnimatedVisibility, - enter = EnterTransition.None, - ) - .sharedBounds( - rememberSharedContentState(key = "icon_background"), - this@AnimatedVisibility, - enter = EnterTransition.None, - exit = ExitTransition.None - ), - shape = RoundedCornerShape(30.dp), - color = selectionColor - ) { - Icon( - Icons.Outlined.Create, - contentDescription = "Create", - tint = Color.White, - modifier = Modifier - .padding(30.dp) - .size(40.dp) - .sharedElement( - rememberSharedContentState(key = "icon"), - this@AnimatedVisibility - ) - ) - } - } - } - } -} - -@Preview -@Composable -private fun SharedElement_ManualVisibleControl() { - // [START android_compose_shared_element_manual_control] - var selectFirst by remember { mutableStateOf(true) } - val key = remember { Any() } - SharedTransitionLayout( - Modifier - .fillMaxSize() - .padding(10.dp) - .clickable { - selectFirst = !selectFirst - } - ) { - Box( - Modifier - .sharedElementWithCallerManagedVisibility( - rememberSharedContentState(key = key), - !selectFirst, - boundsTransform = boundsTransform - ) - .background(Color.Red) - .size(100.dp) - ) { - Text(if (!selectFirst) "false" else "true", color = Color.White) - } - Box( - Modifier - .offset(180.dp, 180.dp) - .sharedElementWithCallerManagedVisibility( - rememberSharedContentState( - key = key, - ), - selectFirst, - boundsTransform = boundsTransform - ) - .alpha(0.5f) - .background(Color.Blue) - .size(180.dp) - ) { - Text(if (selectFirst) "false" else "true", color = Color.White) - } - } - // [END android_compose_shared_element_manual_control] -} - -private val boundsTransform = BoundsTransform { initial, target -> - // Move vertically first then horizontally - keyframes { - durationMillis = 500 - initial at 0 - Rect(initial.left, target.top, initial.left + target.width, target.bottom) at 300 - } -} - -val listSnacks = listOf( - Snack("Cupcake", "", R.drawable.cupcake), - Snack("Donut", "", R.drawable.donut), - Snack("Eclair", "", R.drawable.eclair), - Snack("Froyo", "", R.drawable.froyo), - Snack("Gingerbread", "", R.drawable.gingerbread), - Snack("Honeycomb", "", R.drawable.honeycomb), -) - -@Preview -@Composable -fun SharedElement_PredictiveBack() { - // [START android_compose_shared_element_predictive_back] - SharedTransitionLayout { - val boundsTransform = { _: Rect, _: Rect -> tween(1400) } - - val navController = rememberNavController() - NavHost( - navController = navController, - startDestination = "home" - ) { - - composable("home") { - LazyColumn( - modifier = Modifier - .fillMaxSize() - .padding(8.dp), - verticalArrangement = Arrangement.spacedBy(8.dp) - ) { - itemsIndexed(listSnacks) { index, item -> - Row( - Modifier.clickable { - navController.navigate("details/$index") - } - ) { - Spacer(modifier = Modifier.width(8.dp)) - Image( - painterResource(id = item.image), - contentDescription = item.description, - contentScale = ContentScale.Crop, - modifier = Modifier - .sharedElement( - rememberSharedContentState(key = "image-$index"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform - ) - .size(100.dp) - ) - Spacer(modifier = Modifier.width(8.dp)) - Text( - item.name, fontSize = 18.sp, - modifier = Modifier - .align(Alignment.CenterVertically) - .sharedElement( - rememberSharedContentState(key = "text-$index"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform - ) - ) - } - } - } - } - composable( - "details/{item}", - arguments = listOf(navArgument("item") { type = NavType.IntType }) - ) { backStackEntry -> - val id = backStackEntry.arguments?.getInt("item") - val snack = listSnacks[id!!] - Column( - Modifier - .fillMaxSize() - .clickable { - navController.navigate("home") - } - ) { - Image( - painterResource(id = snack.image), - contentDescription = snack.description, - contentScale = ContentScale.Crop, - modifier = Modifier - .sharedElement( - rememberSharedContentState(key = "image-$id"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform - ) - .aspectRatio(1f) - .fillMaxWidth() - ) - Text( - snack.name, fontSize = 18.sp, - modifier = - Modifier - .sharedElement( - rememberSharedContentState(key = "text-$id"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform - ) - .fillMaxWidth() - ) - } - } - } - } -// [END android_compose_shared_element_predictive_back] -} - -data class Snack( - val name: String, - val description: String, - @DrawableRes val image: Int -) - -@Preview -@Composable -private fun SkipToLookahead() { -// Nested shared bounds sample. - val selectionColor = Color(0xff3367ba) - var expanded by remember { mutableStateOf(true) } - SharedTransitionLayout( - Modifier - .fillMaxSize() - .clickable { - expanded = !expanded - } - .background(Color(0x88000000)) - ) { - AnimatedVisibility( - visible = expanded, - enter = EnterTransition.None, - exit = ExitTransition.None - ) { - Box(modifier = Modifier.fillMaxSize()) { - Surface( - Modifier - .align(Alignment.BottomCenter) - .padding(20.dp) - .sharedBounds( - rememberSharedContentState(key = "container"), - this@AnimatedVisibility - ) - .requiredHeightIn(max = 60.dp), - shape = RoundedCornerShape(50), - ) { - Row( - Modifier - .padding(10.dp) - // By using Modifier.skipToLookaheadSize(), we are telling the layout - // system to layout the children of this node as if the animations had - // all finished. This avoid re-laying out the Row with animated width, - // which is _sometimes_ desirable. Try removing this modifier and - // observe the effect. - .skipToLookaheadSize() - ) { - Icon( - Icons.Outlined.Share, - contentDescription = "Share", - modifier = Modifier.padding( - top = 10.dp, - bottom = 10.dp, - start = 10.dp, - end = 20.dp - ) - ) - Icon( - Icons.Outlined.Favorite, - contentDescription = "Favorite", - modifier = Modifier.padding( - top = 10.dp, - bottom = 10.dp, - start = 10.dp, - end = 20.dp - ) - ) - Icon( - Icons.Outlined.Create, - contentDescription = "Create", - tint = Color.White, - modifier = Modifier - .sharedBounds( - rememberSharedContentState(key = "icon_background"), - this@AnimatedVisibility - ) - .background(selectionColor, RoundedCornerShape(50)) - .padding( - top = 10.dp, - bottom = 10.dp, - start = 20.dp, - end = 20.dp - ) - .sharedElement( - rememberSharedContentState(key = "icon"), - this@AnimatedVisibility - ) - ) - } - } - } - } - AnimatedVisibility( - visible = !expanded, - enter = EnterTransition.None, - exit = ExitTransition.None - ) { - Box(modifier = Modifier.fillMaxSize()) { - Surface( - Modifier - .align(Alignment.BottomEnd) - .padding(30.dp) - .sharedBounds( - rememberSharedContentState(key = "container"), - this@AnimatedVisibility, - enter = EnterTransition.None, - ) - .sharedBounds( - rememberSharedContentState(key = "icon_background"), - this@AnimatedVisibility, - enter = EnterTransition.None, - exit = ExitTransition.None - ), - shape = RoundedCornerShape(30.dp), - color = selectionColor - ) { - Icon( - Icons.Outlined.Create, - contentDescription = "Create", - tint = Color.White, - modifier = Modifier - .padding(30.dp) - .size(40.dp) - .sharedElement( - rememberSharedContentState(key = "icon"), - this@AnimatedVisibility - ) - ) - } - } - } - } -} - -@Preview -@Composable -private fun SharedAsyncImage() { - SharedTransitionLayout { - AnimatedVisibility(visible = true) { - // [START android_compose_shared_element_async_image_tip] - AsyncImage( - model = ImageRequest.Builder(LocalContext.current) - .data("your-image-url") - .crossfade(true) - .build(), - placeholder = null, - contentDescription = null, - modifier = Modifier - .size(120.dp) - .sharedBounds( - rememberSharedContentState( - key = "image-key" - ), - animatedVisibilityScope = this, - exit = ExitTransition.None - ) - ) - // [END android_compose_shared_element_async_image_tip] - } - } -} - -@Composable -fun debugPlaceholder(@DrawableRes debugPreview: Int) = - if (LocalInspectionMode.current) { - painterResource(id = debugPreview) - } else { - null - } - -@Preview -@Composable -private fun SharedElementTypicalUseText() { - SharedTransitionLayout { - AnimatedVisibility(visible = true) { - // [START android_compose_shared_element_text_tip] - Text( - text = "This is an example of how to share text", - modifier = Modifier - .wrapContentWidth() - .sharedBounds( - rememberSharedContentState( - key = "shared Text" - ), - animatedVisibilityScope = this, - enter = fadeIn() + scaleInSharedContentToBounds(), - exit = fadeOut() + scaleOutSharedContentToBounds() - ) - ) - // [END android_compose_shared_element_text_tip] - } - } -} - -@Preview -@Composable -private fun UnmatchedBoundsExample() { - // [START android_compose_animation_shared_element_bounds_unmatched] - var selectFirst by remember { mutableStateOf(true) } - val key = remember { Any() } - SharedTransitionLayout( - Modifier - .fillMaxSize() - .padding(10.dp) - .clickable { - selectFirst = !selectFirst - } - ) { - AnimatedContent(targetState = selectFirst, label = "AnimatedContent") { targetState -> - if (targetState) { - Box( - Modifier - .padding(12.dp) - .sharedBounds( - rememberSharedContentState(key = key), - animatedVisibilityScope = this@AnimatedContent - ) - .border(2.dp, Color.Red) - ) { - Text( - "Hello", - fontSize = 20.sp - ) - } - } else { - Box( - Modifier - .offset(180.dp, 180.dp) - .sharedBounds( - rememberSharedContentState( - key = key, - ), - animatedVisibilityScope = this@AnimatedContent - ) - .border(2.dp, Color.Red) - .padding(12.dp) - - ) { - Text( - "Hello", - fontSize = 36.sp - ) - } - } - } - } - // [END android_compose_animation_shared_element_bounds_unmatched] -} - -@Preview -@Composable -fun PlaceholderSizeAnimated_Demo() { - // This demo shows how other items in a layout can respond to shared elements changing in size. - // [START android_compose_shared_element_placeholder_size] - SharedTransitionLayout { - val boundsTransform = { _: Rect, _: Rect -> tween(1000) } - - val navController = rememberNavController() - NavHost( - navController = navController, - startDestination = "home" - ) { - composable("home", enterTransition = { fadeIn() }, exitTransition = { fadeOut() }) { - Column { - Row(modifier = Modifier.horizontalScroll(rememberScrollState())) { - (listSnacks).forEachIndexed { index, snack -> - Image( - painterResource(id = snack.image), - contentDescription = snack.description, - contentScale = ContentScale.Crop, - modifier = Modifier - .padding(8.dp) - .sharedBounds( - rememberSharedContentState(key = "image-${snack.name}"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform, - placeHolderSize = SharedTransitionScope.PlaceHolderSize.animatedSize - ) - .clickable { - navController.navigate("details/$index") - } - .height(180.dp) - .clip(RoundedCornerShape(8.dp)) - .aspectRatio(9f / 16f) - - ) - } - } - Text("Nearby snacks") - Row(modifier = Modifier.horizontalScroll(rememberScrollState())) { - (listSnacks).forEach { snack -> - Image( - painterResource(id = snack.image), - contentDescription = snack.description, - contentScale = ContentScale.Crop, - modifier = Modifier - .height(200.dp) - .aspectRatio(16f / 9f) - .padding(8.dp) - ) - } - } - } - } - composable( - "details/{id}", - arguments = listOf(navArgument("id") { type = NavType.IntType }), - enterTransition = { fadeIn() }, exitTransition = { fadeOut() } - ) { backStackEntry -> - val id = backStackEntry.arguments?.getInt("id") - val snack = listSnacks[id!!] - Column( - Modifier - .fillMaxSize() - .clickable { - navController.navigateUp() - } - ) { - Image( - painterResource(id = snack.image), - contentDescription = snack.description, - contentScale = ContentScale.Crop, - modifier = Modifier - .sharedBounds( - rememberSharedContentState(key = "image-${snack.name}"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform, - placeHolderSize = SharedTransitionScope.PlaceHolderSize.animatedSize - ) - .clip(RoundedCornerShape(8.dp)) - .aspectRatio(9f / 16f) - .fillMaxWidth() - ) - } - } - } - } -// [END android_compose_shared_element_placeholder_size] -} \ No newline at end of file diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt new file mode 100644 index 000000000..dae978c11 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt @@ -0,0 +1,467 @@ +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibilityScope +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.compose.snippets.R +import com.example.compose.snippets.ui.theme.LavenderLight +import com.example.compose.snippets.ui.theme.RoseLight + +private class SharedElementBasicUsage1 { + @Preview + // [START android_compose_animations_shared_element_start] + @Composable + private fun SharedElementApp() { + var showDetails by remember { + mutableStateOf(false) + } + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent(onShowDetails = { + showDetails = true + }) + } else { + DetailsContent(onBack = { + showDetails = false + }) + } + } + } + + @Composable + private fun MainContent(onShowDetails: () -> Unit) { + Row( + // [START_EXCLUDE] + modifier = Modifier + .padding(8.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text("Cupcake", fontSize = 21.sp) + } + } + + @Composable + private fun DetailsContent(modifier: Modifier = Modifier, onBack: () -> Unit) { + Column( + // [START_EXCLUDE] + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text("Cupcake", fontSize = 28.sp) + // [START_EXCLUDE] + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } + // [END android_compose_animations_shared_element_start] +} + +private class SharedElementBasicUsage2 { + @Preview + @Composable + private fun SharedElementApp() { + // [START android_compose_animations_shared_element_step1] + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + // [END android_compose_animations_shared_element_step1] + } + + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Row( + // [START_EXCLUDE] + modifier = Modifier + .padding(8.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text("Cupcake", fontSize = 21.sp) + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Column( + // [START_EXCLUDE] + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text("Cupcake", fontSize = 28.sp) + // [START_EXCLUDE] + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } +} + + + +private class SharedElementBasicUsage3 { + + @Preview + @Composable + private fun SharedElementApp() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + } + + // [START android_compose_animations_shared_element_step2] + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Row( + // [START_EXCLUDE] + modifier = Modifier + .padding(8.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + with(sharedTransitionScope) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 21.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + } + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Column( + // [START_EXCLUDE] + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + with(sharedTransitionScope) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 28.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + // [START_EXCLUDE] + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } + } + // [END android_compose_animations_shared_element_step2] +} + + +@Preview +@Composable +private fun SharedElement_ManualVisibleControl() { + // [START android_compose_shared_element_manual_control] + var selectFirst by remember { mutableStateOf(true) } + val key = remember { Any() } + SharedTransitionLayout( + Modifier + .fillMaxSize() + .padding(10.dp) + .clickable { + selectFirst = !selectFirst + } + ) { + Box( + Modifier + .sharedElementWithCallerManagedVisibility( + rememberSharedContentState(key = key), + !selectFirst + ) + .background(Color.Red) + .size(100.dp) + ) { + Text(if (!selectFirst) "false" else "true", color = Color.White) + } + Box( + Modifier + .offset(180.dp, 180.dp) + .sharedElementWithCallerManagedVisibility( + rememberSharedContentState( + key = key, + ), + selectFirst + ) + .alpha(0.5f) + .background(Color.Blue) + .size(180.dp) + ) { + Text(if (selectFirst) "false" else "true", color = Color.White) + } + } + // [END android_compose_shared_element_manual_control] +} + +@Preview +@Composable +private fun UnmatchedBoundsExample() { + // [START android_compose_animation_shared_element_bounds_unmatched] + var selectFirst by remember { mutableStateOf(true) } + val key = remember { Any() } + SharedTransitionLayout( + Modifier + .fillMaxSize() + .padding(10.dp) + .clickable { + selectFirst = !selectFirst + } + ) { + AnimatedContent(targetState = selectFirst, label = "AnimatedContent") { targetState -> + if (targetState) { + Box( + Modifier + .padding(12.dp) + .sharedBounds( + rememberSharedContentState(key = key), + animatedVisibilityScope = this@AnimatedContent + ) + .border(2.dp, Color.Red) + ) { + Text( + "Hello", + fontSize = 20.sp + ) + } + } else { + Box( + Modifier + .offset(180.dp, 180.dp) + .sharedBounds( + rememberSharedContentState( + key = key, + ), + animatedVisibilityScope = this@AnimatedContent + ) + .border(2.dp, Color.Red) + .padding(12.dp) + + ) { + Text( + "Hello", + fontSize = 36.sp + ) + } + } + } + } + // [END android_compose_animation_shared_element_bounds_unmatched] +} \ No newline at end of file diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt new file mode 100644 index 000000000..babe75375 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt @@ -0,0 +1,549 @@ +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.AnimatedVisibilityScope +import androidx.compose.animation.BoundsTransform +import androidx.compose.animation.EnterTransition +import androidx.compose.animation.ExitTransition +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.keyframes +import androidx.compose.animation.core.spring +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.horizontalScroll +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredHeightIn +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Create +import androidx.compose.material.icons.outlined.Favorite +import androidx.compose.material.icons.outlined.Share +import androidx.compose.material3.Icon +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import androidx.navigation.navArgument +import com.example.compose.snippets.R +import com.example.compose.snippets.ui.theme.LavenderLight +import com.example.compose.snippets.ui.theme.RoseLight + + +private class SharedElementBoundsTransform { + @Preview + @Composable + private fun SharedElementApp() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + } + + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + with(sharedTransitionScope) { + Row( + modifier = Modifier + .padding(8.dp) + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut() + ) + // [START_EXCLUDE] + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + // [START_EXCLUDE] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = { _, _ -> + spring( + stiffness = Spring.StiffnessMediumLow, + dampingRatio = Spring.DampingRatioMediumBouncy + ) + } + ) + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 21.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + // [END_EXCLUDE] + } + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + with(sharedTransitionScope) { + Column( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut() + ) + // [START_EXCLUDE] + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + + ) { + // [START android_compose_shared_element_image_bounds_transform] + val imageBoundsTransform = BoundsTransform { initial, target -> + keyframes { + durationMillis = 500 + initial at 0 + Rect( + target.left + 100, + target.top, + target.right + 100, + target.bottom + ) at 300 + } + } + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = imageBoundsTransform + ) + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + // [END android_compose_shared_element_image_bounds_transform] + Text( + "Cupcake", fontSize = 28.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + } + } + } +} + + + +@Preview +@Composable +private fun SharedElement_Clipping() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + Row( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = this@AnimatedContent + ) + .background(Color.Green.copy(alpha = 0.5f)) + .padding(8.dp) + .clickable { + showDetails = true + } + ) { + // [START android_compose_animations_shared_element_clipping] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(100.dp) + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = this@AnimatedContent + ) + .clip(RoundedCornerShape(16.dp)), + contentScale = ContentScale.Crop + ) + // [END android_compose_animations_shared_element_clipping] + Text( + "Lorem ipsum dolor sit amet.", fontSize = 21.sp, + modifier = Modifier.sharedElement( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = this@AnimatedContent, + + ) + ) + } + } else { + Column( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = this@AnimatedContent + ) + .background(Color.Green.copy(alpha = 0.7f)) + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .clickable { + showDetails = false + } + + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(200.dp) + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = this@AnimatedContent + ) + .clip(RoundedCornerShape(16.dp)), + contentScale = ContentScale.Crop + ) + Text( + "Lorem ipsum dolor sit amet.", fontSize = 21.sp, + modifier = Modifier.sharedElement( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = this@AnimatedContent + ) + ) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + } + } + } + } +} + +@Preview +@Composable +private fun SharedElement_SkipLookaheadSize() { + // Nested shared bounds sample. + val selectionColor = Color(0xff3367ba) + var expanded by remember { mutableStateOf(true) } + SharedTransitionLayout( + Modifier + .fillMaxSize() + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + expanded = !expanded + } + .background(Color(0x88000000)) + ) { + AnimatedVisibility( + visible = expanded, + enter = EnterTransition.None, + exit = ExitTransition.None + ) { + Box(modifier = Modifier.fillMaxSize()) { + Surface( + Modifier + .align(Alignment.BottomCenter) + .padding(20.dp) + .sharedBounds( + rememberSharedContentState(key = "container"), + this@AnimatedVisibility + ) + .requiredHeightIn(max = 60.dp), + shape = RoundedCornerShape(50), + ) { + Row( + Modifier + .padding(10.dp) + // By using Modifier.skipToLookaheadSize(), we are telling the layout + // system to layout the children of this node as if the animations had + // all finished. This avoid re-laying out the Row with animated width, + // which is _sometimes_ desirable. Try removing this modifier and + // observe the effect. + .skipToLookaheadSize() + ) { + Icon( + Icons.Outlined.Share, + contentDescription = "Share", + modifier = Modifier.padding( + top = 10.dp, + bottom = 10.dp, + start = 10.dp, + end = 20.dp + ) + ) + Icon( + Icons.Outlined.Favorite, + contentDescription = "Favorite", + modifier = Modifier.padding( + top = 10.dp, + bottom = 10.dp, + start = 10.dp, + end = 20.dp + ) + ) + Icon( + Icons.Outlined.Create, + contentDescription = "Create", + tint = Color.White, + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "icon_background"), + this@AnimatedVisibility + ) + .background(selectionColor, RoundedCornerShape(50)) + .padding( + top = 10.dp, + bottom = 10.dp, + start = 20.dp, + end = 20.dp + ) + .sharedElement( + rememberSharedContentState(key = "icon"), + this@AnimatedVisibility + ) + ) + } + } + } + } + AnimatedVisibility( + visible = !expanded, + enter = EnterTransition.None, + exit = ExitTransition.None + ) { + Box(modifier = Modifier.fillMaxSize()) { + Surface( + Modifier + .align(Alignment.BottomEnd) + .padding(30.dp) + .sharedBounds( + rememberSharedContentState(key = "container"), + this@AnimatedVisibility, + enter = EnterTransition.None, + ) + .sharedBounds( + rememberSharedContentState(key = "icon_background"), + this@AnimatedVisibility, + enter = EnterTransition.None, + exit = ExitTransition.None + ), + shape = RoundedCornerShape(30.dp), + color = selectionColor + ) { + Icon( + Icons.Outlined.Create, + contentDescription = "Create", + tint = Color.White, + modifier = Modifier + .padding(30.dp) + .size(40.dp) + .sharedElement( + rememberSharedContentState(key = "icon"), + this@AnimatedVisibility + ) + ) + } + } + } + } +} + +@Preview +@Composable +fun PlaceholderSizeAnimated_Demo() { + // This demo shows how other items in a layout can respond to shared elements changing in size. + // [START android_compose_shared_element_placeholder_size] + SharedTransitionLayout { + val boundsTransform = { _: Rect, _: Rect -> tween(1000) } + + val navController = rememberNavController() + NavHost( + navController = navController, + startDestination = "home" + ) { + composable("home", enterTransition = { fadeIn() }, exitTransition = { fadeOut() }) { + Column { + Row(modifier = Modifier.horizontalScroll(rememberScrollState())) { + (listSnacks).forEachIndexed { index, snack -> + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .padding(8.dp) + .sharedBounds( + rememberSharedContentState(key = "image-${snack.name}"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform, + placeHolderSize = SharedTransitionScope.PlaceHolderSize.animatedSize + ) + .clickable { + navController.navigate("details/$index") + } + .height(180.dp) + .clip(RoundedCornerShape(8.dp)) + .aspectRatio(9f / 16f) + + ) + } + } + Text("Nearby snacks") + Row(modifier = Modifier.horizontalScroll(rememberScrollState())) { + (listSnacks).forEach { snack -> + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .height(200.dp) + .aspectRatio(16f / 9f) + .padding(8.dp) + ) + } + } + } + } + composable( + "details/{id}", + arguments = listOf(navArgument("id") { type = NavType.IntType }), + enterTransition = { fadeIn() }, exitTransition = { fadeOut() } + ) { backStackEntry -> + val id = backStackEntry.arguments?.getInt("id") + val snack = listSnacks[id!!] + Column( + Modifier + .fillMaxSize() + .clickable { + navController.navigateUp() + } + ) { + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "image-${snack.name}"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform, + placeHolderSize = SharedTransitionScope.PlaceHolderSize.animatedSize + ) + .clip(RoundedCornerShape(8.dp)) + .aspectRatio(9f / 16f) + .fillMaxWidth() + ) + } + } + } + } +// [END android_compose_shared_element_placeholder_size] +} \ No newline at end of file diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt new file mode 100644 index 000000000..13cf954dc --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt @@ -0,0 +1,185 @@ +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibilityScope +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.compose.snippets.R +import com.example.compose.snippets.ui.theme.LavenderLight +import com.example.compose.snippets.ui.theme.RoseLight + +private class SharedElementBasicUsage4 { + + @Preview + @Composable + private fun SharedElementApp() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + } + + // [START android_compose_animations_shared_element_shared_bounds] + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + with(sharedTransitionScope) { + Row( + modifier = Modifier + .padding(8.dp) + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut() + ) + // [START_EXCLUDE] + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + // [START_EXCLUDE] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 21.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + // [END_EXCLUDE] + } + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + with(sharedTransitionScope) { + Column( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut() + ) + // [START_EXCLUDE] + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + + ) { + // [START_EXCLUDE] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 28.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } + } + // [END android_compose_animations_shared_element_shared_bounds] +} \ No newline at end of file diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt new file mode 100644 index 000000000..4dce268f9 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt @@ -0,0 +1,84 @@ +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.annotation.DrawableRes +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.ExitTransition +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalInspectionMode +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import coil.compose.AsyncImage +import coil.request.ImageRequest + + +@Preview +@Composable +private fun SharedAsyncImage() { + SharedTransitionLayout { + AnimatedVisibility(visible = true) { + // [START android_compose_shared_element_async_image_tip] + AsyncImage( + model = ImageRequest.Builder(LocalContext.current) + .data("your-image-url") + .crossfade(true) + .build(), + placeholder = null, + contentDescription = null, + modifier = Modifier + .size(120.dp) + .sharedBounds( + rememberSharedContentState( + key = "image-key" + ), + animatedVisibilityScope = this, + exit = ExitTransition.None + ) + ) + // [END android_compose_shared_element_async_image_tip] + } + } +} + +@Composable +fun debugPlaceholder(@DrawableRes debugPreview: Int) = + if (LocalInspectionMode.current) { + painterResource(id = debugPreview) + } else { + null + } + +@Preview +@Composable +private fun SharedElementTypicalUseText() { + SharedTransitionLayout { + AnimatedVisibility(visible = true) { + // [START android_compose_shared_element_text_tip] + Text( + text = "This is an example of how to share text", + modifier = Modifier + .wrapContentWidth() + .sharedBounds( + rememberSharedContentState( + key = "shared Text" + ), + animatedVisibilityScope = this, + enter = fadeIn() + scaleInSharedContentToBounds(), + exit = fadeOut() + scaleOutSharedContentToBounds() + ) + ) + // [END android_compose_shared_element_text_tip] + } + } +} \ No newline at end of file diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt new file mode 100644 index 000000000..c24ca346f --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt @@ -0,0 +1,152 @@ +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.annotation.DrawableRes +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.core.tween +import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import androidx.navigation.navArgument +import com.example.compose.snippets.R + + +val listSnacks = listOf( + Snack("Cupcake", "", R.drawable.cupcake), + Snack("Donut", "", R.drawable.donut), + Snack("Eclair", "", R.drawable.eclair), + Snack("Froyo", "", R.drawable.froyo), + Snack("Gingerbread", "", R.drawable.gingerbread), + Snack("Honeycomb", "", R.drawable.honeycomb), +) + +@Preview +@Composable +fun SharedElement_PredictiveBack() { + // [START android_compose_shared_element_predictive_back] + SharedTransitionLayout { + val boundsTransform = { _: Rect, _: Rect -> tween(1400) } + + val navController = rememberNavController() + NavHost( + navController = navController, + startDestination = "home" + ) { + + composable("home") { + LazyColumn( + modifier = Modifier + .fillMaxSize() + .padding(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + itemsIndexed(listSnacks) { index, item -> + Row( + Modifier.clickable { + navController.navigate("details/$index") + } + ) { + Spacer(modifier = Modifier.width(8.dp)) + Image( + painterResource(id = item.image), + contentDescription = item.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image-$index"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform + ) + .size(100.dp) + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + item.name, fontSize = 18.sp, + modifier = Modifier + .align(Alignment.CenterVertically) + .sharedElement( + rememberSharedContentState(key = "text-$index"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform + ) + ) + } + } + } + } + composable( + "details/{item}", + arguments = listOf(navArgument("item") { type = NavType.IntType }) + ) { backStackEntry -> + val id = backStackEntry.arguments?.getInt("item") + val snack = listSnacks[id!!] + Column( + Modifier + .fillMaxSize() + .clickable { + navController.navigate("home") + } + ) { + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image-$id"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform + ) + .aspectRatio(1f) + .fillMaxWidth() + ) + Text( + snack.name, fontSize = 18.sp, + modifier = + Modifier + .sharedElement( + rememberSharedContentState(key = "text-$id"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform + ) + .fillMaxWidth() + ) + } + } + } + } +// [END android_compose_shared_element_predictive_back] +} + +data class Snack( + val name: String, + val description: String, + @DrawableRes val image: Int +) \ No newline at end of file From 8e224852186a9da18af246d4f817226df08368d3 Mon Sep 17 00:00:00 2001 From: riggaroo Date: Mon, 29 Apr 2024 16:19:10 +0000 Subject: [PATCH 13/59] Apply Spotless --- .../BasicSharedElementSnippets.kt | 45 ++++++++++++------- .../CustomizeSharedElementsSnippets.kt | 39 ++++++++++------ .../sharedelement/SharedBoundsSnippets.kt | 26 ++++++++--- .../SharedElementCommonUseCaseSnippets.kt | 19 +++++++- .../SharedElementsWithNavigationSnippets.kt | 19 +++++++- 5 files changed, 110 insertions(+), 38 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt index dae978c11..74f388b72 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + @file:OptIn(ExperimentalSharedTransitionApi::class) package com.example.compose.snippets.animations.sharedelement @@ -115,10 +131,10 @@ private class SharedElementBasicUsage1 { // [START_EXCLUDE] Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) // [END_EXCLUDE] } @@ -222,18 +238,16 @@ private class SharedElementBasicUsage2 { // [START_EXCLUDE] Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) // [END_EXCLUDE] } } } - - private class SharedElementBasicUsage3 { @Preview @@ -354,10 +368,10 @@ private class SharedElementBasicUsage3 { // [START_EXCLUDE] Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) // [END_EXCLUDE] } @@ -366,7 +380,6 @@ private class SharedElementBasicUsage3 { // [END android_compose_animations_shared_element_step2] } - @Preview @Composable private fun SharedElement_ManualVisibleControl() { @@ -464,4 +477,4 @@ private fun UnmatchedBoundsExample() { } } // [END android_compose_animation_shared_element_bounds_unmatched] -} \ No newline at end of file +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt index babe75375..4e38c18b1 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + @file:OptIn(ExperimentalSharedTransitionApi::class) package com.example.compose.snippets.animations.sharedelement @@ -67,7 +83,6 @@ import com.example.compose.snippets.R import com.example.compose.snippets.ui.theme.LavenderLight import com.example.compose.snippets.ui.theme.RoseLight - private class SharedElementBoundsTransform { @Preview @Composable @@ -221,18 +236,16 @@ private class SharedElementBoundsTransform { ) Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) } } } } - - @Preview @Composable private fun SharedElement_Clipping() { @@ -277,7 +290,7 @@ private fun SharedElement_Clipping() { rememberSharedContentState(key = "title"), animatedVisibilityScope = this@AnimatedContent, - ) + ) ) } } else { @@ -315,10 +328,10 @@ private fun SharedElement_Clipping() { ) Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) } } @@ -546,4 +559,4 @@ fun PlaceholderSizeAnimated_Demo() { } } // [END android_compose_shared_element_placeholder_size] -} \ No newline at end of file +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt index 13cf954dc..6fca70b16 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + @file:OptIn(ExperimentalSharedTransitionApi::class) package com.example.compose.snippets.animations.sharedelement @@ -172,14 +188,14 @@ private class SharedElementBasicUsage4 { ) Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) // [END_EXCLUDE] } } } // [END android_compose_animations_shared_element_shared_bounds] -} \ No newline at end of file +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt index 4dce268f9..ed63da7b5 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + @file:OptIn(ExperimentalSharedTransitionApi::class) package com.example.compose.snippets.animations.sharedelement @@ -22,7 +38,6 @@ import androidx.compose.ui.unit.dp import coil.compose.AsyncImage import coil.request.ImageRequest - @Preview @Composable private fun SharedAsyncImage() { @@ -81,4 +96,4 @@ private fun SharedElementTypicalUseText() { // [END android_compose_shared_element_text_tip] } } -} \ No newline at end of file +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt index c24ca346f..56333e83f 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt @@ -1,3 +1,19 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + @file:OptIn(ExperimentalSharedTransitionApi::class) package com.example.compose.snippets.animations.sharedelement @@ -37,7 +53,6 @@ import androidx.navigation.compose.rememberNavController import androidx.navigation.navArgument import com.example.compose.snippets.R - val listSnacks = listOf( Snack("Cupcake", "", R.drawable.cupcake), Snack("Donut", "", R.drawable.donut), @@ -149,4 +164,4 @@ data class Snack( val name: String, val description: String, @DrawableRes val image: Int -) \ No newline at end of file +) From ee796a9fed1d449366985e3e3649100ba992caa4 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 30 Apr 2024 14:44:05 +0100 Subject: [PATCH 14/59] Shared element snippets (#256) * add shared element snippets * Apply Spotless * Split snippets into different files. * Apply Spotless --------- Co-authored-by: riggaroo --- .../BasicSharedElementSnippets.kt | 480 +++++++++++++++ .../CustomizeSharedElementsSnippets.kt | 562 ++++++++++++++++++ .../sharedelement/SharedBoundsSnippets.kt | 201 +++++++ .../SharedElementCommonUseCaseSnippets.kt | 99 +++ .../SharedElementsWithNavigationSnippets.kt | 167 ++++++ .../compose/snippets/ui/theme/Color.kt | 6 + .../src/main/res/drawable/cupcake.jpg | Bin 0 -> 87777 bytes .../snippets/src/main/res/drawable/donut.jpeg | Bin 0 -> 65266 bytes .../src/main/res/drawable/eclair.jpeg | Bin 0 -> 99829 bytes .../snippets/src/main/res/drawable/froyo.jpeg | Bin 0 -> 75308 bytes .../src/main/res/drawable/gingerbread.jpg | Bin 0 -> 148964 bytes .../src/main/res/drawable/honeycomb.jpg | Bin 0 -> 77136 bytes 12 files changed, 1515 insertions(+) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt create mode 100644 compose/snippets/src/main/res/drawable/cupcake.jpg create mode 100644 compose/snippets/src/main/res/drawable/donut.jpeg create mode 100644 compose/snippets/src/main/res/drawable/eclair.jpeg create mode 100644 compose/snippets/src/main/res/drawable/froyo.jpeg create mode 100644 compose/snippets/src/main/res/drawable/gingerbread.jpg create mode 100644 compose/snippets/src/main/res/drawable/honeycomb.jpg diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt new file mode 100644 index 000000000..74f388b72 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt @@ -0,0 +1,480 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibilityScope +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.offset +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.alpha +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.compose.snippets.R +import com.example.compose.snippets.ui.theme.LavenderLight +import com.example.compose.snippets.ui.theme.RoseLight + +private class SharedElementBasicUsage1 { + @Preview + // [START android_compose_animations_shared_element_start] + @Composable + private fun SharedElementApp() { + var showDetails by remember { + mutableStateOf(false) + } + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent(onShowDetails = { + showDetails = true + }) + } else { + DetailsContent(onBack = { + showDetails = false + }) + } + } + } + + @Composable + private fun MainContent(onShowDetails: () -> Unit) { + Row( + // [START_EXCLUDE] + modifier = Modifier + .padding(8.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text("Cupcake", fontSize = 21.sp) + } + } + + @Composable + private fun DetailsContent(modifier: Modifier = Modifier, onBack: () -> Unit) { + Column( + // [START_EXCLUDE] + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text("Cupcake", fontSize = 28.sp) + // [START_EXCLUDE] + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } + // [END android_compose_animations_shared_element_start] +} + +private class SharedElementBasicUsage2 { + @Preview + @Composable + private fun SharedElementApp() { + // [START android_compose_animations_shared_element_step1] + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + // [END android_compose_animations_shared_element_step1] + } + + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Row( + // [START_EXCLUDE] + modifier = Modifier + .padding(8.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text("Cupcake", fontSize = 21.sp) + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Column( + // [START_EXCLUDE] + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text("Cupcake", fontSize = 28.sp) + // [START_EXCLUDE] + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } +} + +private class SharedElementBasicUsage3 { + + @Preview + @Composable + private fun SharedElementApp() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + } + + // [START android_compose_animations_shared_element_step2] + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Row( + // [START_EXCLUDE] + modifier = Modifier + .padding(8.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + with(sharedTransitionScope) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 21.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + } + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + Column( + // [START_EXCLUDE] + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + with(sharedTransitionScope) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 28.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + // [START_EXCLUDE] + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } + } + // [END android_compose_animations_shared_element_step2] +} + +@Preview +@Composable +private fun SharedElement_ManualVisibleControl() { + // [START android_compose_shared_element_manual_control] + var selectFirst by remember { mutableStateOf(true) } + val key = remember { Any() } + SharedTransitionLayout( + Modifier + .fillMaxSize() + .padding(10.dp) + .clickable { + selectFirst = !selectFirst + } + ) { + Box( + Modifier + .sharedElementWithCallerManagedVisibility( + rememberSharedContentState(key = key), + !selectFirst + ) + .background(Color.Red) + .size(100.dp) + ) { + Text(if (!selectFirst) "false" else "true", color = Color.White) + } + Box( + Modifier + .offset(180.dp, 180.dp) + .sharedElementWithCallerManagedVisibility( + rememberSharedContentState( + key = key, + ), + selectFirst + ) + .alpha(0.5f) + .background(Color.Blue) + .size(180.dp) + ) { + Text(if (selectFirst) "false" else "true", color = Color.White) + } + } + // [END android_compose_shared_element_manual_control] +} + +@Preview +@Composable +private fun UnmatchedBoundsExample() { + // [START android_compose_animation_shared_element_bounds_unmatched] + var selectFirst by remember { mutableStateOf(true) } + val key = remember { Any() } + SharedTransitionLayout( + Modifier + .fillMaxSize() + .padding(10.dp) + .clickable { + selectFirst = !selectFirst + } + ) { + AnimatedContent(targetState = selectFirst, label = "AnimatedContent") { targetState -> + if (targetState) { + Box( + Modifier + .padding(12.dp) + .sharedBounds( + rememberSharedContentState(key = key), + animatedVisibilityScope = this@AnimatedContent + ) + .border(2.dp, Color.Red) + ) { + Text( + "Hello", + fontSize = 20.sp + ) + } + } else { + Box( + Modifier + .offset(180.dp, 180.dp) + .sharedBounds( + rememberSharedContentState( + key = key, + ), + animatedVisibilityScope = this@AnimatedContent + ) + .border(2.dp, Color.Red) + .padding(12.dp) + + ) { + Text( + "Hello", + fontSize = 36.sp + ) + } + } + } + } + // [END android_compose_animation_shared_element_bounds_unmatched] +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt new file mode 100644 index 000000000..4e38c18b1 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt @@ -0,0 +1,562 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.AnimatedVisibilityScope +import androidx.compose.animation.BoundsTransform +import androidx.compose.animation.EnterTransition +import androidx.compose.animation.ExitTransition +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.keyframes +import androidx.compose.animation.core.spring +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.horizontalScroll +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.requiredHeightIn +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.outlined.Create +import androidx.compose.material.icons.outlined.Favorite +import androidx.compose.material.icons.outlined.Share +import androidx.compose.material3.Icon +import androidx.compose.material3.Surface +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import androidx.navigation.navArgument +import com.example.compose.snippets.R +import com.example.compose.snippets.ui.theme.LavenderLight +import com.example.compose.snippets.ui.theme.RoseLight + +private class SharedElementBoundsTransform { + @Preview + @Composable + private fun SharedElementApp() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + } + + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + with(sharedTransitionScope) { + Row( + modifier = Modifier + .padding(8.dp) + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut() + ) + // [START_EXCLUDE] + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + // [START_EXCLUDE] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = { _, _ -> + spring( + stiffness = Spring.StiffnessMediumLow, + dampingRatio = Spring.DampingRatioMediumBouncy + ) + } + ) + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 21.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + // [END_EXCLUDE] + } + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + with(sharedTransitionScope) { + Column( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut() + ) + // [START_EXCLUDE] + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + + ) { + // [START android_compose_shared_element_image_bounds_transform] + val imageBoundsTransform = BoundsTransform { initial, target -> + keyframes { + durationMillis = 500 + initial at 0 + Rect( + target.left + 100, + target.top, + target.right + 100, + target.bottom + ) at 300 + } + } + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = imageBoundsTransform + ) + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + // [END android_compose_shared_element_image_bounds_transform] + Text( + "Cupcake", fontSize = 28.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + } + } + } +} + +@Preview +@Composable +private fun SharedElement_Clipping() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + Row( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = this@AnimatedContent + ) + .background(Color.Green.copy(alpha = 0.5f)) + .padding(8.dp) + .clickable { + showDetails = true + } + ) { + // [START android_compose_animations_shared_element_clipping] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(100.dp) + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = this@AnimatedContent + ) + .clip(RoundedCornerShape(16.dp)), + contentScale = ContentScale.Crop + ) + // [END android_compose_animations_shared_element_clipping] + Text( + "Lorem ipsum dolor sit amet.", fontSize = 21.sp, + modifier = Modifier.sharedElement( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = this@AnimatedContent, + + ) + ) + } + } else { + Column( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = this@AnimatedContent + ) + .background(Color.Green.copy(alpha = 0.7f)) + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .clickable { + showDetails = false + } + + ) { + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .size(200.dp) + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = this@AnimatedContent + ) + .clip(RoundedCornerShape(16.dp)), + contentScale = ContentScale.Crop + ) + Text( + "Lorem ipsum dolor sit amet.", fontSize = 21.sp, + modifier = Modifier.sharedElement( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = this@AnimatedContent + ) + ) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + } + } + } + } +} + +@Preview +@Composable +private fun SharedElement_SkipLookaheadSize() { + // Nested shared bounds sample. + val selectionColor = Color(0xff3367ba) + var expanded by remember { mutableStateOf(true) } + SharedTransitionLayout( + Modifier + .fillMaxSize() + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + expanded = !expanded + } + .background(Color(0x88000000)) + ) { + AnimatedVisibility( + visible = expanded, + enter = EnterTransition.None, + exit = ExitTransition.None + ) { + Box(modifier = Modifier.fillMaxSize()) { + Surface( + Modifier + .align(Alignment.BottomCenter) + .padding(20.dp) + .sharedBounds( + rememberSharedContentState(key = "container"), + this@AnimatedVisibility + ) + .requiredHeightIn(max = 60.dp), + shape = RoundedCornerShape(50), + ) { + Row( + Modifier + .padding(10.dp) + // By using Modifier.skipToLookaheadSize(), we are telling the layout + // system to layout the children of this node as if the animations had + // all finished. This avoid re-laying out the Row with animated width, + // which is _sometimes_ desirable. Try removing this modifier and + // observe the effect. + .skipToLookaheadSize() + ) { + Icon( + Icons.Outlined.Share, + contentDescription = "Share", + modifier = Modifier.padding( + top = 10.dp, + bottom = 10.dp, + start = 10.dp, + end = 20.dp + ) + ) + Icon( + Icons.Outlined.Favorite, + contentDescription = "Favorite", + modifier = Modifier.padding( + top = 10.dp, + bottom = 10.dp, + start = 10.dp, + end = 20.dp + ) + ) + Icon( + Icons.Outlined.Create, + contentDescription = "Create", + tint = Color.White, + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "icon_background"), + this@AnimatedVisibility + ) + .background(selectionColor, RoundedCornerShape(50)) + .padding( + top = 10.dp, + bottom = 10.dp, + start = 20.dp, + end = 20.dp + ) + .sharedElement( + rememberSharedContentState(key = "icon"), + this@AnimatedVisibility + ) + ) + } + } + } + } + AnimatedVisibility( + visible = !expanded, + enter = EnterTransition.None, + exit = ExitTransition.None + ) { + Box(modifier = Modifier.fillMaxSize()) { + Surface( + Modifier + .align(Alignment.BottomEnd) + .padding(30.dp) + .sharedBounds( + rememberSharedContentState(key = "container"), + this@AnimatedVisibility, + enter = EnterTransition.None, + ) + .sharedBounds( + rememberSharedContentState(key = "icon_background"), + this@AnimatedVisibility, + enter = EnterTransition.None, + exit = ExitTransition.None + ), + shape = RoundedCornerShape(30.dp), + color = selectionColor + ) { + Icon( + Icons.Outlined.Create, + contentDescription = "Create", + tint = Color.White, + modifier = Modifier + .padding(30.dp) + .size(40.dp) + .sharedElement( + rememberSharedContentState(key = "icon"), + this@AnimatedVisibility + ) + ) + } + } + } + } +} + +@Preview +@Composable +fun PlaceholderSizeAnimated_Demo() { + // This demo shows how other items in a layout can respond to shared elements changing in size. + // [START android_compose_shared_element_placeholder_size] + SharedTransitionLayout { + val boundsTransform = { _: Rect, _: Rect -> tween(1000) } + + val navController = rememberNavController() + NavHost( + navController = navController, + startDestination = "home" + ) { + composable("home", enterTransition = { fadeIn() }, exitTransition = { fadeOut() }) { + Column { + Row(modifier = Modifier.horizontalScroll(rememberScrollState())) { + (listSnacks).forEachIndexed { index, snack -> + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .padding(8.dp) + .sharedBounds( + rememberSharedContentState(key = "image-${snack.name}"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform, + placeHolderSize = SharedTransitionScope.PlaceHolderSize.animatedSize + ) + .clickable { + navController.navigate("details/$index") + } + .height(180.dp) + .clip(RoundedCornerShape(8.dp)) + .aspectRatio(9f / 16f) + + ) + } + } + Text("Nearby snacks") + Row(modifier = Modifier.horizontalScroll(rememberScrollState())) { + (listSnacks).forEach { snack -> + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .height(200.dp) + .aspectRatio(16f / 9f) + .padding(8.dp) + ) + } + } + } + } + composable( + "details/{id}", + arguments = listOf(navArgument("id") { type = NavType.IntType }), + enterTransition = { fadeIn() }, exitTransition = { fadeOut() } + ) { backStackEntry -> + val id = backStackEntry.arguments?.getInt("id") + val snack = listSnacks[id!!] + Column( + Modifier + .fillMaxSize() + .clickable { + navController.navigateUp() + } + ) { + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "image-${snack.name}"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform, + placeHolderSize = SharedTransitionScope.PlaceHolderSize.animatedSize + ) + .clip(RoundedCornerShape(8.dp)) + .aspectRatio(9f / 16f) + .fillMaxWidth() + ) + } + } + } + } +// [END android_compose_shared_element_placeholder_size] +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt new file mode 100644 index 000000000..6fca70b16 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt @@ -0,0 +1,201 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibilityScope +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.border +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.shape.CircleShape +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import com.example.compose.snippets.R +import com.example.compose.snippets.ui.theme.LavenderLight +import com.example.compose.snippets.ui.theme.RoseLight + +private class SharedElementBasicUsage4 { + + @Preview + @Composable + private fun SharedElementApp() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } + } + } + } + + // [START android_compose_animations_shared_element_shared_bounds] + @Composable + private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + with(sharedTransitionScope) { + Row( + modifier = Modifier + .padding(8.dp) + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut() + ) + // [START_EXCLUDE] + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + // [START_EXCLUDE] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 21.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + // [END_EXCLUDE] + } + } + } + + @Composable + private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope + ) { + with(sharedTransitionScope) { + Column( + modifier = Modifier + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut() + ) + // [START_EXCLUDE] + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + + ) { + // [START_EXCLUDE] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), + animatedVisibilityScope = animatedVisibilityScope + ) + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 28.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope + ) + ) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] + } + } + } + // [END android_compose_animations_shared_element_shared_bounds] +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt new file mode 100644 index 000000000..ed63da7b5 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt @@ -0,0 +1,99 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.annotation.DrawableRes +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.ExitTransition +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Modifier +import androidx.compose.ui.platform.LocalContext +import androidx.compose.ui.platform.LocalInspectionMode +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import coil.compose.AsyncImage +import coil.request.ImageRequest + +@Preview +@Composable +private fun SharedAsyncImage() { + SharedTransitionLayout { + AnimatedVisibility(visible = true) { + // [START android_compose_shared_element_async_image_tip] + AsyncImage( + model = ImageRequest.Builder(LocalContext.current) + .data("your-image-url") + .crossfade(true) + .build(), + placeholder = null, + contentDescription = null, + modifier = Modifier + .size(120.dp) + .sharedBounds( + rememberSharedContentState( + key = "image-key" + ), + animatedVisibilityScope = this, + exit = ExitTransition.None + ) + ) + // [END android_compose_shared_element_async_image_tip] + } + } +} + +@Composable +fun debugPlaceholder(@DrawableRes debugPreview: Int) = + if (LocalInspectionMode.current) { + painterResource(id = debugPreview) + } else { + null + } + +@Preview +@Composable +private fun SharedElementTypicalUseText() { + SharedTransitionLayout { + AnimatedVisibility(visible = true) { + // [START android_compose_shared_element_text_tip] + Text( + text = "This is an example of how to share text", + modifier = Modifier + .wrapContentWidth() + .sharedBounds( + rememberSharedContentState( + key = "shared Text" + ), + animatedVisibilityScope = this, + enter = fadeIn() + scaleInSharedContentToBounds(), + exit = fadeOut() + scaleOutSharedContentToBounds() + ) + ) + // [END android_compose_shared_element_text_tip] + } + } +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt new file mode 100644 index 000000000..56333e83f --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt @@ -0,0 +1,167 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.annotation.DrawableRes +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.core.tween +import androidx.compose.foundation.Image +import androidx.compose.foundation.clickable +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.size +import androidx.compose.foundation.layout.width +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.material3.Text +import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.geometry.Rect +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import androidx.compose.ui.unit.sp +import androidx.navigation.NavType +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import androidx.navigation.navArgument +import com.example.compose.snippets.R + +val listSnacks = listOf( + Snack("Cupcake", "", R.drawable.cupcake), + Snack("Donut", "", R.drawable.donut), + Snack("Eclair", "", R.drawable.eclair), + Snack("Froyo", "", R.drawable.froyo), + Snack("Gingerbread", "", R.drawable.gingerbread), + Snack("Honeycomb", "", R.drawable.honeycomb), +) + +@Preview +@Composable +fun SharedElement_PredictiveBack() { + // [START android_compose_shared_element_predictive_back] + SharedTransitionLayout { + val boundsTransform = { _: Rect, _: Rect -> tween(1400) } + + val navController = rememberNavController() + NavHost( + navController = navController, + startDestination = "home" + ) { + + composable("home") { + LazyColumn( + modifier = Modifier + .fillMaxSize() + .padding(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + itemsIndexed(listSnacks) { index, item -> + Row( + Modifier.clickable { + navController.navigate("details/$index") + } + ) { + Spacer(modifier = Modifier.width(8.dp)) + Image( + painterResource(id = item.image), + contentDescription = item.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image-$index"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform + ) + .size(100.dp) + ) + Spacer(modifier = Modifier.width(8.dp)) + Text( + item.name, fontSize = 18.sp, + modifier = Modifier + .align(Alignment.CenterVertically) + .sharedElement( + rememberSharedContentState(key = "text-$index"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform + ) + ) + } + } + } + } + composable( + "details/{item}", + arguments = listOf(navArgument("item") { type = NavType.IntType }) + ) { backStackEntry -> + val id = backStackEntry.arguments?.getInt("item") + val snack = listSnacks[id!!] + Column( + Modifier + .fillMaxSize() + .clickable { + navController.navigate("home") + } + ) { + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image-$id"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform + ) + .aspectRatio(1f) + .fillMaxWidth() + ) + Text( + snack.name, fontSize = 18.sp, + modifier = + Modifier + .sharedElement( + rememberSharedContentState(key = "text-$id"), + animatedVisibilityScope = this@composable, + boundsTransform = boundsTransform + ) + .fillMaxWidth() + ) + } + } + } + } +// [END android_compose_shared_element_predictive_back] +} + +data class Snack( + val name: String, + val description: String, + @DrawableRes val image: Int +) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt b/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt index 21909a8cb..6c6006ead 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/ui/theme/Color.kt @@ -25,3 +25,9 @@ val Pink80 = Color(0xFFEFB8C8) val Purple40 = Color(0xFF6650a4) val PurpleGrey40 = Color(0xFF625b71) val Pink40 = Color(0xFF7D5260) + +val LavenderDark = Color(0xff23009e) +val LavenderLight = Color(0xFFDDBEFC) + +val RoseDark = Color(0xffaf0060) +val RoseLight = Color(0xFFFFAFC9) diff --git a/compose/snippets/src/main/res/drawable/cupcake.jpg b/compose/snippets/src/main/res/drawable/cupcake.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0696e8a645a5ce232dc591717684b51f54893fa3 GIT binary patch literal 87777 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 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable/donut.jpeg b/compose/snippets/src/main/res/drawable/donut.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..57d0199f29468f276c0ffddd077756db6b64b2d5 GIT binary patch literal 65266 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 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable/eclair.jpeg b/compose/snippets/src/main/res/drawable/eclair.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..6ec767a0f2dda826aeb5547df75aacbdfd8d6739 GIT binary patch literal 99829 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 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable/froyo.jpeg b/compose/snippets/src/main/res/drawable/froyo.jpeg new file mode 100644 index 0000000000000000000000000000000000000000..f3126d5077c9961fe6c137368e44c5472c892459 GIT binary patch literal 75308 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�`UW4& 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 VU&Hj&vMjlep?(*ik^can|Jmjh5<>t0 literal 0 HcmV?d00001 diff --git a/compose/snippets/src/main/res/drawable/honeycomb.jpg b/compose/snippets/src/main/res/drawable/honeycomb.jpg new file mode 100644 index 0000000000000000000000000000000000000000..94c892b576b5c3842db3cb99d0f5bebaf04299a3 GIT binary patch literal 77136 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/H!HGKBZ;?%8 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 z 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 Date: Tue, 30 Apr 2024 14:44:37 +0100 Subject: [PATCH 15/59] Update libs.versions.toml (#251) (#252) Co-authored-by: Simona <35065668+simona-anomis@users.noreply.github.com> From 664855e77827225da94425b0e99ced015d9d7a3c Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 1 May 2024 11:13:14 +0100 Subject: [PATCH 16/59] Snippet updates based on peer feedback. --- .../BasicSharedElementSnippets.kt | 95 +------ .../CustomizeSharedElementsSnippets.kt | 248 +++++++++++------- .../SharedElementsWithNavigationSnippets.kt | 163 +++++++----- 3 files changed, 260 insertions(+), 246 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt index 74f388b72..d2fb25e18 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt @@ -55,93 +55,6 @@ import com.example.compose.snippets.R import com.example.compose.snippets.ui.theme.LavenderLight import com.example.compose.snippets.ui.theme.RoseLight -private class SharedElementBasicUsage1 { - @Preview - // [START android_compose_animations_shared_element_start] - @Composable - private fun SharedElementApp() { - var showDetails by remember { - mutableStateOf(false) - } - AnimatedContent( - showDetails, - label = "basic_transition" - ) { targetState -> - if (!targetState) { - MainContent(onShowDetails = { - showDetails = true - }) - } else { - DetailsContent(onBack = { - showDetails = false - }) - } - } - } - - @Composable - private fun MainContent(onShowDetails: () -> Unit) { - Row( - // [START_EXCLUDE] - modifier = Modifier - .padding(8.dp) - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(LavenderLight, RoundedCornerShape(8.dp)) - .clickable { - onShowDetails() - } - .padding(8.dp) - // [END_EXCLUDE] - ) { - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .size(100.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - Text("Cupcake", fontSize = 21.sp) - } - } - - @Composable - private fun DetailsContent(modifier: Modifier = Modifier, onBack: () -> Unit) { - Column( - // [START_EXCLUDE] - modifier = Modifier - .padding(top = 200.dp, start = 16.dp, end = 16.dp) - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(RoseLight, RoundedCornerShape(8.dp)) - .clickable { - onBack() - } - .padding(8.dp) - // [END_EXCLUDE] - ) { - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .size(200.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - Text("Cupcake", fontSize = 28.sp) - // [START_EXCLUDE] - Text( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" - ) - // [END_EXCLUDE] - } - } - // [END android_compose_animations_shared_element_start] -} - private class SharedElementBasicUsage2 { @Preview @Composable @@ -203,7 +116,9 @@ private class SharedElementBasicUsage2 { .clip(CircleShape), contentScale = ContentScale.Crop ) + // [START_EXCLUDE] Text("Cupcake", fontSize = 21.sp) + // [END_EXCLUDE] } } @@ -234,8 +149,8 @@ private class SharedElementBasicUsage2 { .clip(CircleShape), contentScale = ContentScale.Crop ) - Text("Cupcake", fontSize = 28.sp) // [START_EXCLUDE] + Text("Cupcake", fontSize = 28.sp) Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + @@ -315,6 +230,7 @@ private class SharedElementBasicUsage3 { .clip(CircleShape), contentScale = ContentScale.Crop ) + // [START_EXCLUDE] Text( "Cupcake", fontSize = 21.sp, modifier = Modifier.sharedBounds( @@ -322,6 +238,7 @@ private class SharedElementBasicUsage3 { animatedVisibilityScope = animatedVisibilityScope ) ) + // [END_EXCLUDE] } } } @@ -358,6 +275,7 @@ private class SharedElementBasicUsage3 { .clip(CircleShape), contentScale = ContentScale.Crop ) + // [START_EXCLUDE] Text( "Cupcake", fontSize = 28.sp, modifier = Modifier.sharedBounds( @@ -365,7 +283,6 @@ private class SharedElementBasicUsage3 { animatedVisibilityScope = animatedVisibilityScope ) ) - // [START_EXCLUDE] Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt index 4e38c18b1..26e3c6578 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt @@ -27,12 +27,17 @@ import androidx.compose.animation.ExitTransition import androidx.compose.animation.ExperimentalSharedTransitionApi import androidx.compose.animation.SharedTransitionLayout import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.core.ArcMode +import androidx.compose.animation.core.ExperimentalAnimationSpecApi +import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.Spring import androidx.compose.animation.core.keyframes import androidx.compose.animation.core.spring import androidx.compose.animation.core.tween import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border @@ -83,66 +88,79 @@ import com.example.compose.snippets.R import com.example.compose.snippets.ui.theme.LavenderLight import com.example.compose.snippets.ui.theme.RoseLight -private class SharedElementBoundsTransform { - @Preview - @Composable - private fun SharedElementApp() { - var showDetails by remember { - mutableStateOf(false) - } - SharedTransitionLayout { - AnimatedContent( - showDetails, - label = "basic_transition" - ) { targetState -> - if (!targetState) { - MainContent( - onShowDetails = { - showDetails = true - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } else { - DetailsContent( - onBack = { - showDetails = false - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } +@Preview +@Composable +fun SharedElementApp_BoundsTransformExample() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) } } } +} - @Composable - private fun MainContent( - onShowDetails: () -> Unit, - modifier: Modifier = Modifier, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - with(sharedTransitionScope) { +@OptIn(ExperimentalAnimationSpecApi::class) +@Composable +private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope +) { + with(sharedTransitionScope) { + Box(modifier = Modifier.fillMaxSize()) { Row( modifier = Modifier .padding(8.dp) + .fillMaxWidth() .sharedBounds( rememberSharedContentState(key = "bounds"), animatedVisibilityScope = animatedVisibilityScope, - enter = fadeIn(), - exit = fadeOut() + enter = fadeIn( + tween( + boundsAnimationDurationMillis, + easing = FastOutSlowInEasing + ) + ), + exit = fadeOut( + tween( + boundsAnimationDurationMillis, + easing = FastOutSlowInEasing + ) + ), + boundsTransform = boundsTransform ) - // [START_EXCLUDE] .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) .background(LavenderLight, RoundedCornerShape(8.dp)) - .clickable { + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { onShowDetails() } .padding(8.dp) - // [END_EXCLUDE] ) { - // [START_EXCLUDE] Image( painter = painterResource(id = R.drawable.cupcake), contentDescription = "Cupcake", @@ -150,69 +168,72 @@ private class SharedElementBoundsTransform { .sharedElement( rememberSharedContentState(key = "image"), animatedVisibilityScope = animatedVisibilityScope, - boundsTransform = { _, _ -> - spring( - stiffness = Spring.StiffnessMediumLow, - dampingRatio = Spring.DampingRatioMediumBouncy - ) - } + boundsTransform = boundsTransform ) .size(100.dp) .clip(CircleShape), contentScale = ContentScale.Crop ) + val textBoundsTransform = BoundsTransform { initialBounds, targetBounds -> + keyframes { + durationMillis = boundsAnimationDurationMillis + initialBounds at 0 using ArcMode.ArcBelow using FastOutSlowInEasing + targetBounds at boundsAnimationDurationMillis + } + } Text( "Cupcake", fontSize = 21.sp, modifier = Modifier.sharedBounds( rememberSharedContentState(key = "title"), - animatedVisibilityScope = animatedVisibilityScope + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = textBoundsTransform ) ) - // [END_EXCLUDE] } } } +} - @Composable - private fun DetailsContent( - modifier: Modifier = Modifier, - onBack: () -> Unit, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - with(sharedTransitionScope) { +@OptIn(ExperimentalAnimationSpecApi::class) +@Composable +private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope +) { + with(sharedTransitionScope) { + Box(modifier = Modifier.fillMaxSize()) { Column( modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) .sharedBounds( rememberSharedContentState(key = "bounds"), animatedVisibilityScope = animatedVisibilityScope, - enter = fadeIn(), - exit = fadeOut() + enter = fadeIn( + tween( + durationMillis = boundsAnimationDurationMillis, + easing = FastOutSlowInEasing + ) + ), + exit = fadeOut( + tween( + durationMillis = boundsAnimationDurationMillis, + easing = FastOutSlowInEasing + ) + ), + boundsTransform = boundsTransform ) - // [START_EXCLUDE] - .padding(top = 200.dp, start = 16.dp, end = 16.dp) .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) .background(RoseLight, RoundedCornerShape(8.dp)) - .clickable { + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { onBack() } .padding(8.dp) - // [END_EXCLUDE] - ) { - // [START android_compose_shared_element_image_bounds_transform] - val imageBoundsTransform = BoundsTransform { initial, target -> - keyframes { - durationMillis = 500 - initial at 0 - Rect( - target.left + 100, - target.top, - target.right + 100, - target.bottom - ) at 300 - } - } Image( painter = painterResource(id = R.drawable.cupcake), contentDescription = "Cupcake", @@ -220,32 +241,47 @@ private class SharedElementBoundsTransform { .sharedElement( rememberSharedContentState(key = "image"), animatedVisibilityScope = animatedVisibilityScope, - boundsTransform = imageBoundsTransform + boundsTransform = boundsTransform ) .size(200.dp) .clip(CircleShape), contentScale = ContentScale.Crop ) - // [END android_compose_shared_element_image_bounds_transform] + // [START android_compose_shared_element_text_bounds_transform] + val textBoundsTransform = BoundsTransform { initialBounds, targetBounds -> + keyframes { + durationMillis = boundsAnimationDurationMillis + initialBounds at 0 using ArcMode.ArcBelow using FastOutSlowInEasing + targetBounds at boundsAnimationDurationMillis + } + } Text( "Cupcake", fontSize = 28.sp, modifier = Modifier.sharedBounds( rememberSharedContentState(key = "title"), - animatedVisibilityScope = animatedVisibilityScope + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = textBoundsTransform ) ) + // [END android_compose_shared_element_text_bounds_transform] Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus", + modifier = Modifier.skipToLookaheadSize() ) } } } } +private val boundsTransform = BoundsTransform { _: Rect, _: Rect -> + tween(durationMillis = boundsAnimationDurationMillis, easing = FastOutSlowInEasing) +} +private const val boundsAnimationDurationMillis = 500 + @Preview @Composable private fun SharedElement_Clipping() { @@ -290,7 +326,7 @@ private fun SharedElement_Clipping() { rememberSharedContentState(key = "title"), animatedVisibilityScope = this@AnimatedContent, - ) + ) ) } } else { @@ -328,10 +364,10 @@ private fun SharedElement_Clipping() { ) Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) } } @@ -339,6 +375,36 @@ private fun SharedElement_Clipping() { } } +@Composable +private fun JetsnackBottomBar(modifier: Modifier) { + +} + +@Composable +private fun EnterExitJetsnack() { + SharedTransitionLayout { + AnimatedVisibility(visible = true) { + // [START android_compose_shared_element_enter_exit] + JetsnackBottomBar( + modifier = Modifier + .renderInSharedTransitionScopeOverlay( + zIndexInOverlay = 1f, + ) + .animateEnterExit( + enter = fadeIn() + slideInVertically { + it + }, + exit = fadeOut() + slideOutVertically { + it + } + ) + ) + // [END android_compose_shared_element_enter_exit] + } + } + +} + @Preview @Composable private fun SharedElement_SkipLookaheadSize() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt index 56333e83f..a315950ec 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt @@ -19,8 +19,11 @@ package com.example.compose.snippets.animations.sharedelement import androidx.annotation.DrawableRes +import androidx.compose.animation.AnimatedContentScope import androidx.compose.animation.ExperimentalSharedTransitionApi import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.core.TweenSpec import androidx.compose.animation.core.tween import androidx.compose.foundation.Image import androidx.compose.foundation.clickable @@ -40,12 +43,12 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.geometry.Rect import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController import androidx.navigation.NavType import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable @@ -67,54 +70,17 @@ val listSnacks = listOf( fun SharedElement_PredictiveBack() { // [START android_compose_shared_element_predictive_back] SharedTransitionLayout { - val boundsTransform = { _: Rect, _: Rect -> tween(1400) } - val navController = rememberNavController() NavHost( navController = navController, startDestination = "home" ) { - composable("home") { - LazyColumn( - modifier = Modifier - .fillMaxSize() - .padding(8.dp), - verticalArrangement = Arrangement.spacedBy(8.dp) - ) { - itemsIndexed(listSnacks) { index, item -> - Row( - Modifier.clickable { - navController.navigate("details/$index") - } - ) { - Spacer(modifier = Modifier.width(8.dp)) - Image( - painterResource(id = item.image), - contentDescription = item.description, - contentScale = ContentScale.Crop, - modifier = Modifier - .sharedElement( - rememberSharedContentState(key = "image-$index"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform - ) - .size(100.dp) - ) - Spacer(modifier = Modifier.width(8.dp)) - Text( - item.name, fontSize = 18.sp, - modifier = Modifier - .align(Alignment.CenterVertically) - .sharedElement( - rememberSharedContentState(key = "text-$index"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform - ) - ) - } - } - } + HomeScreen( + navController, + this@SharedTransitionLayout, + this@composable + ) } composable( "details/{item}", @@ -122,42 +88,107 @@ fun SharedElement_PredictiveBack() { ) { backStackEntry -> val id = backStackEntry.arguments?.getInt("item") val snack = listSnacks[id!!] - Column( - Modifier - .fillMaxSize() - .clickable { - navController.navigate("home") - } - ) { + DetailsScreen( + navController, + id, + snack, + this@SharedTransitionLayout, + this@composable + ) + } + } + } + // [END android_compose_shared_element_predictive_back] +} + +@Composable +private fun DetailsScreen( + navController: NavHostController, + id: Int, + snack: Snack, + sharedTransitionScope: SharedTransitionScope, + animatedContentScope: AnimatedContentScope +) { + with(sharedTransitionScope) { + Column( + Modifier + .fillMaxSize() + .clickable { + navController.navigate("home") + } + ) { + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier.Companion + .sharedElement( + sharedTransitionScope.rememberSharedContentState(key = "image-$id"), + animatedVisibilityScope = animatedContentScope + ) + .aspectRatio(1f) + .fillMaxWidth() + ) + Text( + snack.name, fontSize = 18.sp, + modifier = + Modifier.Companion + .sharedElement( + sharedTransitionScope.rememberSharedContentState(key = "text-$id"), + animatedVisibilityScope = animatedContentScope + ) + .fillMaxWidth() + ) + } + } + +} + +@Composable +private fun HomeScreen( + navController: NavHostController, + sharedTransitionScope: SharedTransitionScope, + animatedContentScope: AnimatedContentScope +) { + LazyColumn( + modifier = Modifier + .fillMaxSize() + .padding(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + itemsIndexed(listSnacks) { index, item -> + Row( + Modifier.clickable { + navController.navigate("details/$index") + } + ) { + Spacer(modifier = Modifier.width(8.dp)) + with(sharedTransitionScope) { Image( - painterResource(id = snack.image), - contentDescription = snack.description, + painterResource(id = item.image), + contentDescription = item.description, contentScale = ContentScale.Crop, - modifier = Modifier + modifier = Modifier.Companion .sharedElement( - rememberSharedContentState(key = "image-$id"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform + sharedTransitionScope.rememberSharedContentState(key = "image-$index"), + animatedVisibilityScope = animatedContentScope ) - .aspectRatio(1f) - .fillMaxWidth() + .size(100.dp) ) + Spacer(modifier = Modifier.width(8.dp)) Text( - snack.name, fontSize = 18.sp, - modifier = - Modifier + item.name, fontSize = 18.sp, + modifier = Modifier + .align(Alignment.CenterVertically) .sharedElement( - rememberSharedContentState(key = "text-$id"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform + sharedTransitionScope.rememberSharedContentState(key = "text-$index"), + animatedVisibilityScope = animatedContentScope, ) - .fillMaxWidth() ) } } } } -// [END android_compose_shared_element_predictive_back] } data class Snack( From 2c462815675d6787d647dfd1f7ded03357d0ce53 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 1 May 2024 13:55:13 +0100 Subject: [PATCH 17/59] Shared element snippets (#258) * add shared element snippets * Apply Spotless * Split snippets into different files. * Apply Spotless * Snippet updates based on peer feedback. * Apply Spotless --------- Co-authored-by: riggaroo --- .../BasicSharedElementSnippets.kt | 95 +------ .../CustomizeSharedElementsSnippets.kt | 232 +++++++++++------- .../SharedElementsWithNavigationSnippets.kt | 162 +++++++----- 3 files changed, 248 insertions(+), 241 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt index 74f388b72..d2fb25e18 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt @@ -55,93 +55,6 @@ import com.example.compose.snippets.R import com.example.compose.snippets.ui.theme.LavenderLight import com.example.compose.snippets.ui.theme.RoseLight -private class SharedElementBasicUsage1 { - @Preview - // [START android_compose_animations_shared_element_start] - @Composable - private fun SharedElementApp() { - var showDetails by remember { - mutableStateOf(false) - } - AnimatedContent( - showDetails, - label = "basic_transition" - ) { targetState -> - if (!targetState) { - MainContent(onShowDetails = { - showDetails = true - }) - } else { - DetailsContent(onBack = { - showDetails = false - }) - } - } - } - - @Composable - private fun MainContent(onShowDetails: () -> Unit) { - Row( - // [START_EXCLUDE] - modifier = Modifier - .padding(8.dp) - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(LavenderLight, RoundedCornerShape(8.dp)) - .clickable { - onShowDetails() - } - .padding(8.dp) - // [END_EXCLUDE] - ) { - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .size(100.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - Text("Cupcake", fontSize = 21.sp) - } - } - - @Composable - private fun DetailsContent(modifier: Modifier = Modifier, onBack: () -> Unit) { - Column( - // [START_EXCLUDE] - modifier = Modifier - .padding(top = 200.dp, start = 16.dp, end = 16.dp) - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(RoseLight, RoundedCornerShape(8.dp)) - .clickable { - onBack() - } - .padding(8.dp) - // [END_EXCLUDE] - ) { - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .size(200.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop - ) - Text("Cupcake", fontSize = 28.sp) - // [START_EXCLUDE] - Text( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" - ) - // [END_EXCLUDE] - } - } - // [END android_compose_animations_shared_element_start] -} - private class SharedElementBasicUsage2 { @Preview @Composable @@ -203,7 +116,9 @@ private class SharedElementBasicUsage2 { .clip(CircleShape), contentScale = ContentScale.Crop ) + // [START_EXCLUDE] Text("Cupcake", fontSize = 21.sp) + // [END_EXCLUDE] } } @@ -234,8 +149,8 @@ private class SharedElementBasicUsage2 { .clip(CircleShape), contentScale = ContentScale.Crop ) - Text("Cupcake", fontSize = 28.sp) // [START_EXCLUDE] + Text("Cupcake", fontSize = 28.sp) Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + @@ -315,6 +230,7 @@ private class SharedElementBasicUsage3 { .clip(CircleShape), contentScale = ContentScale.Crop ) + // [START_EXCLUDE] Text( "Cupcake", fontSize = 21.sp, modifier = Modifier.sharedBounds( @@ -322,6 +238,7 @@ private class SharedElementBasicUsage3 { animatedVisibilityScope = animatedVisibilityScope ) ) + // [END_EXCLUDE] } } } @@ -358,6 +275,7 @@ private class SharedElementBasicUsage3 { .clip(CircleShape), contentScale = ContentScale.Crop ) + // [START_EXCLUDE] Text( "Cupcake", fontSize = 28.sp, modifier = Modifier.sharedBounds( @@ -365,7 +283,6 @@ private class SharedElementBasicUsage3 { animatedVisibilityScope = animatedVisibilityScope ) ) - // [START_EXCLUDE] Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt index 4e38c18b1..cf0a9c017 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt @@ -27,12 +27,15 @@ import androidx.compose.animation.ExitTransition import androidx.compose.animation.ExperimentalSharedTransitionApi import androidx.compose.animation.SharedTransitionLayout import androidx.compose.animation.SharedTransitionScope -import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.ArcMode +import androidx.compose.animation.core.ExperimentalAnimationSpecApi +import androidx.compose.animation.core.FastOutSlowInEasing import androidx.compose.animation.core.keyframes -import androidx.compose.animation.core.spring import androidx.compose.animation.core.tween import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut +import androidx.compose.animation.slideInVertically +import androidx.compose.animation.slideOutVertically import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.border @@ -83,66 +86,79 @@ import com.example.compose.snippets.R import com.example.compose.snippets.ui.theme.LavenderLight import com.example.compose.snippets.ui.theme.RoseLight -private class SharedElementBoundsTransform { - @Preview - @Composable - private fun SharedElementApp() { - var showDetails by remember { - mutableStateOf(false) - } - SharedTransitionLayout { - AnimatedContent( - showDetails, - label = "basic_transition" - ) { targetState -> - if (!targetState) { - MainContent( - onShowDetails = { - showDetails = true - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } else { - DetailsContent( - onBack = { - showDetails = false - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } +@Preview +@Composable +fun SharedElementApp_BoundsTransformExample() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) } } } +} - @Composable - private fun MainContent( - onShowDetails: () -> Unit, - modifier: Modifier = Modifier, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - with(sharedTransitionScope) { +@OptIn(ExperimentalAnimationSpecApi::class) +@Composable +private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope +) { + with(sharedTransitionScope) { + Box(modifier = Modifier.fillMaxSize()) { Row( modifier = Modifier .padding(8.dp) + .fillMaxWidth() .sharedBounds( rememberSharedContentState(key = "bounds"), animatedVisibilityScope = animatedVisibilityScope, - enter = fadeIn(), - exit = fadeOut() + enter = fadeIn( + tween( + boundsAnimationDurationMillis, + easing = FastOutSlowInEasing + ) + ), + exit = fadeOut( + tween( + boundsAnimationDurationMillis, + easing = FastOutSlowInEasing + ) + ), + boundsTransform = boundsTransform ) - // [START_EXCLUDE] .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) .background(LavenderLight, RoundedCornerShape(8.dp)) - .clickable { + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { onShowDetails() } .padding(8.dp) - // [END_EXCLUDE] ) { - // [START_EXCLUDE] Image( painter = painterResource(id = R.drawable.cupcake), contentDescription = "Cupcake", @@ -150,69 +166,72 @@ private class SharedElementBoundsTransform { .sharedElement( rememberSharedContentState(key = "image"), animatedVisibilityScope = animatedVisibilityScope, - boundsTransform = { _, _ -> - spring( - stiffness = Spring.StiffnessMediumLow, - dampingRatio = Spring.DampingRatioMediumBouncy - ) - } + boundsTransform = boundsTransform ) .size(100.dp) .clip(CircleShape), contentScale = ContentScale.Crop ) + val textBoundsTransform = BoundsTransform { initialBounds, targetBounds -> + keyframes { + durationMillis = boundsAnimationDurationMillis + initialBounds at 0 using ArcMode.ArcBelow using FastOutSlowInEasing + targetBounds at boundsAnimationDurationMillis + } + } Text( "Cupcake", fontSize = 21.sp, modifier = Modifier.sharedBounds( rememberSharedContentState(key = "title"), - animatedVisibilityScope = animatedVisibilityScope + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = textBoundsTransform ) ) - // [END_EXCLUDE] } } } +} - @Composable - private fun DetailsContent( - modifier: Modifier = Modifier, - onBack: () -> Unit, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - with(sharedTransitionScope) { +@OptIn(ExperimentalAnimationSpecApi::class) +@Composable +private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope +) { + with(sharedTransitionScope) { + Box(modifier = Modifier.fillMaxSize()) { Column( modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) .sharedBounds( rememberSharedContentState(key = "bounds"), animatedVisibilityScope = animatedVisibilityScope, - enter = fadeIn(), - exit = fadeOut() + enter = fadeIn( + tween( + durationMillis = boundsAnimationDurationMillis, + easing = FastOutSlowInEasing + ) + ), + exit = fadeOut( + tween( + durationMillis = boundsAnimationDurationMillis, + easing = FastOutSlowInEasing + ) + ), + boundsTransform = boundsTransform ) - // [START_EXCLUDE] - .padding(top = 200.dp, start = 16.dp, end = 16.dp) .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) .background(RoseLight, RoundedCornerShape(8.dp)) - .clickable { + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { onBack() } .padding(8.dp) - // [END_EXCLUDE] - ) { - // [START android_compose_shared_element_image_bounds_transform] - val imageBoundsTransform = BoundsTransform { initial, target -> - keyframes { - durationMillis = 500 - initial at 0 - Rect( - target.left + 100, - target.top, - target.right + 100, - target.bottom - ) at 300 - } - } Image( painter = painterResource(id = R.drawable.cupcake), contentDescription = "Cupcake", @@ -220,32 +239,47 @@ private class SharedElementBoundsTransform { .sharedElement( rememberSharedContentState(key = "image"), animatedVisibilityScope = animatedVisibilityScope, - boundsTransform = imageBoundsTransform + boundsTransform = boundsTransform ) .size(200.dp) .clip(CircleShape), contentScale = ContentScale.Crop ) - // [END android_compose_shared_element_image_bounds_transform] + // [START android_compose_shared_element_text_bounds_transform] + val textBoundsTransform = BoundsTransform { initialBounds, targetBounds -> + keyframes { + durationMillis = boundsAnimationDurationMillis + initialBounds at 0 using ArcMode.ArcBelow using FastOutSlowInEasing + targetBounds at boundsAnimationDurationMillis + } + } Text( "Cupcake", fontSize = 28.sp, modifier = Modifier.sharedBounds( rememberSharedContentState(key = "title"), - animatedVisibilityScope = animatedVisibilityScope + animatedVisibilityScope = animatedVisibilityScope, + boundsTransform = textBoundsTransform ) ) + // [END android_compose_shared_element_text_bounds_transform] Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus", + modifier = Modifier.skipToLookaheadSize() ) } } } } +private val boundsTransform = BoundsTransform { _: Rect, _: Rect -> + tween(durationMillis = boundsAnimationDurationMillis, easing = FastOutSlowInEasing) +} +private const val boundsAnimationDurationMillis = 500 + @Preview @Composable private fun SharedElement_Clipping() { @@ -339,6 +373,34 @@ private fun SharedElement_Clipping() { } } +@Composable +private fun JetsnackBottomBar(modifier: Modifier) { +} + +@Composable +private fun EnterExitJetsnack() { + SharedTransitionLayout { + AnimatedVisibility(visible = true) { + // [START android_compose_shared_element_enter_exit] + JetsnackBottomBar( + modifier = Modifier + .renderInSharedTransitionScopeOverlay( + zIndexInOverlay = 1f, + ) + .animateEnterExit( + enter = fadeIn() + slideInVertically { + it + }, + exit = fadeOut() + slideOutVertically { + it + } + ) + ) + // [END android_compose_shared_element_enter_exit] + } + } +} + @Preview @Composable private fun SharedElement_SkipLookaheadSize() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt index 56333e83f..4bdb09166 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt @@ -19,9 +19,10 @@ package com.example.compose.snippets.animations.sharedelement import androidx.annotation.DrawableRes +import androidx.compose.animation.AnimatedContentScope import androidx.compose.animation.ExperimentalSharedTransitionApi import androidx.compose.animation.SharedTransitionLayout -import androidx.compose.animation.core.tween +import androidx.compose.animation.SharedTransitionScope import androidx.compose.foundation.Image import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -40,12 +41,12 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.geometry.Rect import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.res.painterResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp +import androidx.navigation.NavHostController import androidx.navigation.NavType import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable @@ -67,54 +68,17 @@ val listSnacks = listOf( fun SharedElement_PredictiveBack() { // [START android_compose_shared_element_predictive_back] SharedTransitionLayout { - val boundsTransform = { _: Rect, _: Rect -> tween(1400) } - val navController = rememberNavController() NavHost( navController = navController, startDestination = "home" ) { - composable("home") { - LazyColumn( - modifier = Modifier - .fillMaxSize() - .padding(8.dp), - verticalArrangement = Arrangement.spacedBy(8.dp) - ) { - itemsIndexed(listSnacks) { index, item -> - Row( - Modifier.clickable { - navController.navigate("details/$index") - } - ) { - Spacer(modifier = Modifier.width(8.dp)) - Image( - painterResource(id = item.image), - contentDescription = item.description, - contentScale = ContentScale.Crop, - modifier = Modifier - .sharedElement( - rememberSharedContentState(key = "image-$index"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform - ) - .size(100.dp) - ) - Spacer(modifier = Modifier.width(8.dp)) - Text( - item.name, fontSize = 18.sp, - modifier = Modifier - .align(Alignment.CenterVertically) - .sharedElement( - rememberSharedContentState(key = "text-$index"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform - ) - ) - } - } - } + HomeScreen( + navController, + this@SharedTransitionLayout, + this@composable + ) } composable( "details/{item}", @@ -122,42 +86,106 @@ fun SharedElement_PredictiveBack() { ) { backStackEntry -> val id = backStackEntry.arguments?.getInt("item") val snack = listSnacks[id!!] - Column( - Modifier - .fillMaxSize() - .clickable { - navController.navigate("home") - } - ) { + DetailsScreen( + navController, + id, + snack, + this@SharedTransitionLayout, + this@composable + ) + } + } + } + // [END android_compose_shared_element_predictive_back] +} + +@Composable +private fun DetailsScreen( + navController: NavHostController, + id: Int, + snack: Snack, + sharedTransitionScope: SharedTransitionScope, + animatedContentScope: AnimatedContentScope +) { + with(sharedTransitionScope) { + Column( + Modifier + .fillMaxSize() + .clickable { + navController.navigate("home") + } + ) { + Image( + painterResource(id = snack.image), + contentDescription = snack.description, + contentScale = ContentScale.Crop, + modifier = Modifier.Companion + .sharedElement( + sharedTransitionScope.rememberSharedContentState(key = "image-$id"), + animatedVisibilityScope = animatedContentScope + ) + .aspectRatio(1f) + .fillMaxWidth() + ) + Text( + snack.name, fontSize = 18.sp, + modifier = + Modifier.Companion + .sharedElement( + sharedTransitionScope.rememberSharedContentState(key = "text-$id"), + animatedVisibilityScope = animatedContentScope + ) + .fillMaxWidth() + ) + } + } +} + +@Composable +private fun HomeScreen( + navController: NavHostController, + sharedTransitionScope: SharedTransitionScope, + animatedContentScope: AnimatedContentScope +) { + LazyColumn( + modifier = Modifier + .fillMaxSize() + .padding(8.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + ) { + itemsIndexed(listSnacks) { index, item -> + Row( + Modifier.clickable { + navController.navigate("details/$index") + } + ) { + Spacer(modifier = Modifier.width(8.dp)) + with(sharedTransitionScope) { Image( - painterResource(id = snack.image), - contentDescription = snack.description, + painterResource(id = item.image), + contentDescription = item.description, contentScale = ContentScale.Crop, - modifier = Modifier + modifier = Modifier.Companion .sharedElement( - rememberSharedContentState(key = "image-$id"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform + sharedTransitionScope.rememberSharedContentState(key = "image-$index"), + animatedVisibilityScope = animatedContentScope ) - .aspectRatio(1f) - .fillMaxWidth() + .size(100.dp) ) + Spacer(modifier = Modifier.width(8.dp)) Text( - snack.name, fontSize = 18.sp, - modifier = - Modifier + item.name, fontSize = 18.sp, + modifier = Modifier + .align(Alignment.CenterVertically) .sharedElement( - rememberSharedContentState(key = "text-$id"), - animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform + sharedTransitionScope.rememberSharedContentState(key = "text-$index"), + animatedVisibilityScope = animatedContentScope, ) - .fillMaxWidth() ) } } } } -// [END android_compose_shared_element_predictive_back] } data class Snack( From 23d2ab2905863886a46daa75c3d7a830c378397e Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 1 May 2024 14:29:21 +0100 Subject: [PATCH 18/59] Unique key snippet --- .../BasicSharedElementSnippets.kt | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt index d2fb25e18..bcc6cfd91 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt @@ -19,6 +19,7 @@ package com.example.compose.snippets.animations.sharedelement import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibilityScope import androidx.compose.animation.ExperimentalSharedTransitionApi import androidx.compose.animation.SharedTransitionLayout @@ -38,6 +39,7 @@ import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.compositionLocalOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -395,3 +397,44 @@ private fun UnmatchedBoundsExample() { } // [END android_compose_animation_shared_element_bounds_unmatched] } + +private object UniqueKeySnippet { + // [START android_compose_shared_elements_unique_key] + data class SnackSharedElementKey( + val snackId: Long, + val origin: String, + val type: SnackSharedElementType + ) + + enum class SnackSharedElementType { + Bounds, + Image, + Title, + Tagline, + Background + } + + @Composable + fun SharedElementUniqueKey() { + // [START_EXCLUDE] + SharedTransitionLayout { + AnimatedVisibility(visible = true) { + // [END_EXCLUDE] + Box(modifier = Modifier + .sharedElement( + rememberSharedContentState( + key = SnackSharedElementKey( + snackId = 1, + origin = "latest", + type = SnackSharedElementType.Image + ) + ), + animatedVisibilityScope = this@AnimatedVisibility + )) + // [START_EXCLUDE] + } + } + // [END_EXCLUDE] + } + // [END android_compose_shared_elements_unique_key] +} From fb5f9826293f597b5f97b383c6382fd12ded6307 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 1 May 2024 15:00:07 +0100 Subject: [PATCH 19/59] Update SharedElementsWithNavigationSnippets.kt --- .../sharedelement/SharedElementsWithNavigationSnippets.kt | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt index a315950ec..1551bdc8b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt @@ -64,11 +64,10 @@ val listSnacks = listOf( Snack("Gingerbread", "", R.drawable.gingerbread), Snack("Honeycomb", "", R.drawable.honeycomb), ) - +// [START android_compose_shared_element_predictive_back] @Preview @Composable fun SharedElement_PredictiveBack() { - // [START android_compose_shared_element_predictive_back] SharedTransitionLayout { val navController = rememberNavController() NavHost( @@ -98,7 +97,6 @@ fun SharedElement_PredictiveBack() { } } } - // [END android_compose_shared_element_predictive_back] } @Composable @@ -196,3 +194,4 @@ data class Snack( val description: String, @DrawableRes val image: Int ) +// [END android_compose_shared_element_predictive_back] \ No newline at end of file From d6d77eb61c92f7565549f5371fcde817adb6efdd Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Thu, 2 May 2024 08:12:35 +0100 Subject: [PATCH 20/59] Update AsyncImage snippet --- .../sharedelement/SharedElementCommonUseCaseSnippets.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt index ed63da7b5..ce14e8399 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt @@ -48,6 +48,8 @@ private fun SharedAsyncImage() { model = ImageRequest.Builder(LocalContext.current) .data("your-image-url") .crossfade(true) + .placeholderMemoryCacheKey("image-key") // same key as shared element key + .memoryCacheKey("image-key") // same key as shared element key .build(), placeholder = null, contentDescription = null, @@ -57,8 +59,7 @@ private fun SharedAsyncImage() { rememberSharedContentState( key = "image-key" ), - animatedVisibilityScope = this, - exit = ExitTransition.None + animatedVisibilityScope = this ) ) // [END android_compose_shared_element_async_image_tip] From 5a44e5e69e97b120bb586b1222c64434f3d07d75 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Thu, 2 May 2024 09:29:32 +0100 Subject: [PATCH 21/59] Add placeholder size example --- .../java/com/example/compose/snippets/SnippetsActivity.kt | 2 ++ .../sharedelement/CustomizeSharedElementsSnippets.kt | 7 ++----- .../com/example/compose/snippets/navigation/Destination.kt | 1 + 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 56330061b..bae8c6bdd 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -28,6 +28,7 @@ import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController import com.example.compose.snippets.animations.AnimationExamplesScreen +import com.example.compose.snippets.animations.sharedelement.PlaceholderSizeAnimated_Demo import com.example.compose.snippets.components.AppBarExamples import com.example.compose.snippets.components.ButtonExamples import com.example.compose.snippets.components.ChipExamples @@ -77,6 +78,7 @@ class SnippetsActivity : ComponentActivity() { ) } Destination.ShapesExamples -> ApplyPolygonAsClipImage() + Destination.SharedElementExamples ->PlaceholderSizeAnimated_Demo() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt index 26e3c6578..51da799f7 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt @@ -542,7 +542,6 @@ fun PlaceholderSizeAnimated_Demo() { // This demo shows how other items in a layout can respond to shared elements changing in size. // [START android_compose_shared_element_placeholder_size] SharedTransitionLayout { - val boundsTransform = { _: Rect, _: Rect -> tween(1000) } val navController = rememberNavController() NavHost( @@ -550,7 +549,7 @@ fun PlaceholderSizeAnimated_Demo() { startDestination = "home" ) { composable("home", enterTransition = { fadeIn() }, exitTransition = { fadeOut() }) { - Column { + Column(modifier = Modifier.fillMaxSize()) { Row(modifier = Modifier.horizontalScroll(rememberScrollState())) { (listSnacks).forEachIndexed { index, snack -> Image( @@ -562,7 +561,6 @@ fun PlaceholderSizeAnimated_Demo() { .sharedBounds( rememberSharedContentState(key = "image-${snack.name}"), animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform, placeHolderSize = SharedTransitionScope.PlaceHolderSize.animatedSize ) .clickable { @@ -613,12 +611,11 @@ fun PlaceholderSizeAnimated_Demo() { .sharedBounds( rememberSharedContentState(key = "image-${snack.name}"), animatedVisibilityScope = this@composable, - boundsTransform = boundsTransform, placeHolderSize = SharedTransitionScope.PlaceHolderSize.animatedSize ) .clip(RoundedCornerShape(8.dp)) - .aspectRatio(9f / 16f) .fillMaxWidth() + .aspectRatio(9f / 16f) ) } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt index 60c07901c..74e794c1c 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/navigation/Destination.kt @@ -23,6 +23,7 @@ enum class Destination(val route: String, val title: String) { ComponentsExamples("topComponents", "Top Compose Components"), ScreenshotExample("screenshotExample", "Screenshot Examples"), ShapesExamples("shapesExamples", "Shapes Examples"), + SharedElementExamples("sharedElement", "Shared elements") } // Enum class for compose components navigation screen. From d918044eaa8ab5b200bd49f931c63a9c5081f7fc Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Fri, 3 May 2024 12:59:13 +0100 Subject: [PATCH 22/59] Add comment to snippet about unmatched bounds --- .../animations/sharedelement/BasicSharedElementSnippets.kt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt index bcc6cfd91..989bf3668 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt @@ -384,6 +384,8 @@ private fun UnmatchedBoundsExample() { animatedVisibilityScope = this@AnimatedContent ) .border(2.dp, Color.Red) + // This padding is placed after sharedBounds, but it doesn't match the + // other shared elements modifier order, resulting in visual jumps .padding(12.dp) ) { From 77e9ab13022628c372d3483b38ff281069761388 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Tue, 7 May 2024 16:54:06 +0100 Subject: [PATCH 23/59] =?UTF-8?q?=F0=9F=A4=96=20Sync=20main=20to=20latest?= =?UTF-8?q?=20(#259)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update libs.versions.toml (#251) * Updated ListDetailPaneScaffold use to alpha12 (#255) This eliminates storing state outside and directly uses the navigator as the source of truth. This also gets rid of the Modifier for AnimatedPane as it's no longer a required argument. * Added NavigationSuiteScaffold snippets (#261) * Added NavigationSuiteScaffold snippets * Apply Spotless * 🤖 Update Dependencies (#262) * Added snippets for SupportingPaneScaffold (#260) * Added snippets for SupportingPaneScaffold * Apply Spotless * Update compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleSupportingPaneScaffold.kt * Migrate to material3-adaptive WindowSizeClass method (#264) * Migrate to material3-adaptive WindowSizeClass method * Update comments to be single line * Apply Spotless --------- Co-authored-by: Simona <35065668+simona-anomis@users.noreply.github.com> Co-authored-by: Ian G. Clifton <1033551+IanGClifton@users.noreply.github.com> Co-authored-by: Alex Vanyo Co-authored-by: compose-devrel-github-bot --- .../compose/snippets/SnippetsActivity.kt | 2 +- .../BasicSharedElementSnippets.kt | 25 ++++++++++--------- .../CustomizeSharedElementsSnippets.kt | 22 +++++++--------- .../SharedElementCommonUseCaseSnippets.kt | 1 - .../SharedElementsWithNavigationSnippets.kt | 5 +--- 5 files changed, 24 insertions(+), 31 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index bae8c6bdd..4e1e13ef8 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -78,7 +78,7 @@ class SnippetsActivity : ComponentActivity() { ) } Destination.ShapesExamples -> ApplyPolygonAsClipImage() - Destination.SharedElementExamples ->PlaceholderSizeAnimated_Demo() + Destination.SharedElementExamples -> PlaceholderSizeAnimated_Demo() } } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt index 989bf3668..fa7efb58b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt @@ -39,7 +39,6 @@ import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.compositionLocalOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -422,17 +421,19 @@ private object UniqueKeySnippet { SharedTransitionLayout { AnimatedVisibility(visible = true) { // [END_EXCLUDE] - Box(modifier = Modifier - .sharedElement( - rememberSharedContentState( - key = SnackSharedElementKey( - snackId = 1, - origin = "latest", - type = SnackSharedElementType.Image - ) - ), - animatedVisibilityScope = this@AnimatedVisibility - )) + Box( + modifier = Modifier + .sharedElement( + rememberSharedContentState( + key = SnackSharedElementKey( + snackId = 1, + origin = "latest", + type = SnackSharedElementType.Image + ) + ), + animatedVisibilityScope = this@AnimatedVisibility + ) + ) // [START_EXCLUDE] } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt index 51da799f7..2b6957ac0 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt @@ -30,9 +30,7 @@ import androidx.compose.animation.SharedTransitionScope import androidx.compose.animation.core.ArcMode import androidx.compose.animation.core.ExperimentalAnimationSpecApi import androidx.compose.animation.core.FastOutSlowInEasing -import androidx.compose.animation.core.Spring import androidx.compose.animation.core.keyframes -import androidx.compose.animation.core.spring import androidx.compose.animation.core.tween import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut @@ -266,10 +264,10 @@ private fun DetailsContent( // [END android_compose_shared_element_text_bounds_transform] Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus", + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus", modifier = Modifier.skipToLookaheadSize() ) } @@ -326,7 +324,7 @@ private fun SharedElement_Clipping() { rememberSharedContentState(key = "title"), animatedVisibilityScope = this@AnimatedContent, - ) + ) ) } } else { @@ -364,10 +362,10 @@ private fun SharedElement_Clipping() { ) Text( "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" ) } } @@ -377,7 +375,6 @@ private fun SharedElement_Clipping() { @Composable private fun JetsnackBottomBar(modifier: Modifier) { - } @Composable @@ -402,7 +399,6 @@ private fun EnterExitJetsnack() { // [END android_compose_shared_element_enter_exit] } } - } @Preview diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt index ce14e8399..b8dbd986a 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt @@ -20,7 +20,6 @@ package com.example.compose.snippets.animations.sharedelement import androidx.annotation.DrawableRes import androidx.compose.animation.AnimatedVisibility -import androidx.compose.animation.ExitTransition import androidx.compose.animation.ExperimentalSharedTransitionApi import androidx.compose.animation.SharedTransitionLayout import androidx.compose.animation.fadeIn diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt index 1551bdc8b..09c72ff4b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt @@ -23,8 +23,6 @@ import androidx.compose.animation.AnimatedContentScope import androidx.compose.animation.ExperimentalSharedTransitionApi import androidx.compose.animation.SharedTransitionLayout import androidx.compose.animation.SharedTransitionScope -import androidx.compose.animation.core.TweenSpec -import androidx.compose.animation.core.tween import androidx.compose.foundation.Image import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement @@ -139,7 +137,6 @@ private fun DetailsScreen( ) } } - } @Composable @@ -194,4 +191,4 @@ data class Snack( val description: String, @DrawableRes val image: Int ) -// [END android_compose_shared_element_predictive_back] \ No newline at end of file +// [END android_compose_shared_element_predictive_back] From 3f7adbe4281c98651826fba5955b7e976caec342 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Thu, 9 May 2024 16:16:19 +0100 Subject: [PATCH 24/59] Update to new lazy list snippets. (#265) --- .../example/compose/snippets/lists/LazyListSnippets.kt | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index e1107eba7..a4a405b3d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -20,6 +20,8 @@ package com.example.compose.snippets.lists import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.ExperimentalAnimationApi +import androidx.compose.animation.core.Spring +import androidx.compose.animation.core.spring import androidx.compose.animation.core.tween import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.horizontalScroll @@ -434,7 +436,7 @@ private fun LazyItemAnimations() { // [START android_compose_layouts_lazy_column_item_animation] LazyColumn { items(books, key = { it.id }) { - Row(Modifier.animateItemPlacement()) { + Row(Modifier.animateItem()) { // ... } } @@ -452,8 +454,10 @@ private fun LazyItemAnimationWithSpec() { LazyColumn { items(books, key = { it.id }) { Row( - Modifier.animateItemPlacement( - tween(durationMillis = 250) + Modifier.animateItem( + fadeInSpec = tween(durationMillis = 250), + fadeOutSpec = tween(durationMillis = 100), + placementSpec = spring(stiffness = Spring.StiffnessLow, dampingRatio = Spring.DampingRatioMediumBouncy) ) ) { // ... From 8abe5ccd396b41cf74d934dc98f1fcd386e554f8 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 14 May 2024 20:16:12 +0100 Subject: [PATCH 25/59] Compose - beta01 (#270) * Update to new beta01 version * Apply Spotless * Update shared element text composable * Apply Spotless --------- Co-authored-by: riggaroo --- .../sharedelement/SharedBoundsSnippets.kt | 255 +++++++++--------- .../SharedElementCommonUseCaseSnippets.kt | 6 +- .../userinteractions/UserInteractions.kt | 14 +- gradle.properties | 19 +- gradle/libs.versions.toml | 10 +- gradle/wrapper/gradle-wrapper.properties | 3 +- 6 files changed, 157 insertions(+), 150 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt index 6fca70b16..3878fa6ad 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedBoundsSnippets.kt @@ -53,149 +53,148 @@ import com.example.compose.snippets.R import com.example.compose.snippets.ui.theme.LavenderLight import com.example.compose.snippets.ui.theme.RoseLight -private class SharedElementBasicUsage4 { - - @Preview - @Composable - private fun SharedElementApp() { - var showDetails by remember { - mutableStateOf(false) - } - SharedTransitionLayout { - AnimatedContent( - showDetails, - label = "basic_transition" - ) { targetState -> - if (!targetState) { - MainContent( - onShowDetails = { - showDetails = true - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } else { - DetailsContent( - onBack = { - showDetails = false - }, - animatedVisibilityScope = this@AnimatedContent, - sharedTransitionScope = this@SharedTransitionLayout - ) - } +@Preview +@Composable +fun SharedBoundsDemo() { + var showDetails by remember { + mutableStateOf(false) + } + SharedTransitionLayout { + AnimatedContent( + showDetails, + label = "basic_transition" + ) { targetState -> + if (!targetState) { + MainContent( + onShowDetails = { + showDetails = true + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) + } else { + DetailsContent( + onBack = { + showDetails = false + }, + animatedVisibilityScope = this@AnimatedContent, + sharedTransitionScope = this@SharedTransitionLayout + ) } } } +} - // [START android_compose_animations_shared_element_shared_bounds] - @Composable - private fun MainContent( - onShowDetails: () -> Unit, - modifier: Modifier = Modifier, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - with(sharedTransitionScope) { - Row( - modifier = Modifier - .padding(8.dp) - .sharedBounds( - rememberSharedContentState(key = "bounds"), - animatedVisibilityScope = animatedVisibilityScope, - enter = fadeIn(), - exit = fadeOut() - ) - // [START_EXCLUDE] - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(LavenderLight, RoundedCornerShape(8.dp)) - .clickable { - onShowDetails() - } - .padding(8.dp) - // [END_EXCLUDE] - ) { - // [START_EXCLUDE] - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .sharedElement( - rememberSharedContentState(key = "image"), - animatedVisibilityScope = animatedVisibilityScope - ) - .size(100.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop +// [START android_compose_animations_shared_element_shared_bounds] +@Composable +private fun MainContent( + onShowDetails: () -> Unit, + modifier: Modifier = Modifier, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope +) { + with(sharedTransitionScope) { + Row( + modifier = Modifier + .padding(8.dp) + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut(), + resizeMode = SharedTransitionScope.ResizeMode.ScaleToBounds() ) - Text( - "Cupcake", fontSize = 21.sp, - modifier = Modifier.sharedBounds( - rememberSharedContentState(key = "title"), + // [START_EXCLUDE] + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(LavenderLight, RoundedCornerShape(8.dp)) + .clickable { + onShowDetails() + } + .padding(8.dp) + // [END_EXCLUDE] + ) { + // [START_EXCLUDE] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), animatedVisibilityScope = animatedVisibilityScope ) + .size(100.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 21.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope ) - // [END_EXCLUDE] - } + ) + // [END_EXCLUDE] } } +} - @Composable - private fun DetailsContent( - modifier: Modifier = Modifier, - onBack: () -> Unit, - sharedTransitionScope: SharedTransitionScope, - animatedVisibilityScope: AnimatedVisibilityScope - ) { - with(sharedTransitionScope) { - Column( - modifier = Modifier - .sharedBounds( - rememberSharedContentState(key = "bounds"), - animatedVisibilityScope = animatedVisibilityScope, - enter = fadeIn(), - exit = fadeOut() - ) - // [START_EXCLUDE] - .padding(top = 200.dp, start = 16.dp, end = 16.dp) - .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) - .background(RoseLight, RoundedCornerShape(8.dp)) - .clickable { - onBack() - } - .padding(8.dp) - // [END_EXCLUDE] - - ) { - // [START_EXCLUDE] - Image( - painter = painterResource(id = R.drawable.cupcake), - contentDescription = "Cupcake", - modifier = Modifier - .sharedElement( - rememberSharedContentState(key = "image"), - animatedVisibilityScope = animatedVisibilityScope - ) - .size(200.dp) - .clip(CircleShape), - contentScale = ContentScale.Crop +@Composable +private fun DetailsContent( + modifier: Modifier = Modifier, + onBack: () -> Unit, + sharedTransitionScope: SharedTransitionScope, + animatedVisibilityScope: AnimatedVisibilityScope +) { + with(sharedTransitionScope) { + Column( + modifier = Modifier + .padding(top = 200.dp, start = 16.dp, end = 16.dp) + .sharedBounds( + rememberSharedContentState(key = "bounds"), + animatedVisibilityScope = animatedVisibilityScope, + enter = fadeIn(), + exit = fadeOut(), + resizeMode = SharedTransitionScope.ResizeMode.ScaleToBounds() ) - Text( - "Cupcake", fontSize = 28.sp, - modifier = Modifier.sharedBounds( - rememberSharedContentState(key = "title"), + // [START_EXCLUDE] + .border(1.dp, Color.Gray.copy(alpha = 0.5f), RoundedCornerShape(8.dp)) + .background(RoseLight, RoundedCornerShape(8.dp)) + .clickable { + onBack() + } + .padding(8.dp) + // [END_EXCLUDE] + + ) { + // [START_EXCLUDE] + Image( + painter = painterResource(id = R.drawable.cupcake), + contentDescription = "Cupcake", + modifier = Modifier + .sharedElement( + rememberSharedContentState(key = "image"), animatedVisibilityScope = animatedVisibilityScope ) + .size(200.dp) + .clip(CircleShape), + contentScale = ContentScale.Crop + ) + Text( + "Cupcake", fontSize = 28.sp, + modifier = Modifier.sharedBounds( + rememberSharedContentState(key = "title"), + animatedVisibilityScope = animatedVisibilityScope ) - Text( - "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + - "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + - " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + - "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + - "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" - ) - // [END_EXCLUDE] - } + ) + Text( + "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Curabitur sit amet lobortis velit. " + + "Lorem ipsum dolor sit amet, consectetur adipiscing elit." + + " Curabitur sagittis, lectus posuere imperdiet facilisis, nibh massa " + + "molestie est, quis dapibus orci ligula non magna. Pellentesque rhoncus " + + "hendrerit massa quis ultricies. Curabitur congue ullamcorper leo, at maximus" + ) + // [END_EXCLUDE] } } - // [END android_compose_animations_shared_element_shared_bounds] } +// [END android_compose_animations_shared_element_shared_bounds] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt index b8dbd986a..944122d1d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementCommonUseCaseSnippets.kt @@ -22,6 +22,7 @@ import androidx.annotation.DrawableRes import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.ExperimentalSharedTransitionApi import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope import androidx.compose.animation.fadeIn import androidx.compose.animation.fadeOut import androidx.compose.foundation.layout.size @@ -89,8 +90,9 @@ private fun SharedElementTypicalUseText() { key = "shared Text" ), animatedVisibilityScope = this, - enter = fadeIn() + scaleInSharedContentToBounds(), - exit = fadeOut() + scaleOutSharedContentToBounds() + enter = fadeIn(), + exit = fadeOut(), + resizeMode = SharedTransitionScope.ResizeMode.ScaleToBounds() ) ) // [END android_compose_shared_element_text_tip] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt index e34dfaa60..07248a6f9 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/userinteractions/UserInteractions.kt @@ -261,25 +261,17 @@ fun MyAppTheme(content: @Composable () -> Unit) { } // [END android_compose_userinteractions_localusefallbackrippleimplementation_app_theme] -// [START android_compose_userinteractions_disabled_ripple_configuration] -@OptIn(ExperimentalMaterialApi::class) -private val DisabledRippleConfiguration = - RippleConfiguration(isEnabled = false) - -// [START_EXCLUDE] @OptIn(ExperimentalMaterialApi::class) @Composable private fun MyComposableDisabledRippleConfig() { -// [END_EXCLUDE] - CompositionLocalProvider(LocalRippleConfiguration provides DisabledRippleConfiguration) { + // [START android_compose_userinteractions_disabled_ripple_configuration] + CompositionLocalProvider(LocalRippleConfiguration provides null) { Button { // ... } } -// [START_EXCLUDE silent] + // [END android_compose_userinteractions_disabled_ripple_configuration] } -// [END_EXCLUDE] -// [END android_compose_userinteractions_disabled_ripple_configuration] // [START android_compose_userinteractions_my_ripple_configuration] @OptIn(ExperimentalMaterialApi::class) diff --git a/gradle.properties b/gradle.properties index 6e7fda850..2dedea847 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,7 +11,20 @@ # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true #Mon May 22 14:59:56 BST 2023 -android.enableJetifier=false +org.gradle.jvmargs=-Xmx2048m + +# Turn on parallel compilation, caching and on-demand configuration +org.gradle.configureondemand=true +org.gradle.caching=true +org.gradle.parallel=true + +# AndroidX package structure to make it clearer which packages are bundled with the +# Android operating system, and which are packaged with your app's APK +# https://developer.android.com/topic/libraries/support-library/androidx-rn android.useAndroidX=true -org.gradle.jvmargs=-Xmx2048M -Dkotlin.daemon.jvm.options\="-Xmx2048M" -org.gradle.unsafe.configuration-cache=true + +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official + +# Enable R8 full mode. +android.enableR8.fullMode=true diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 0a47f7031..be0e97354 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,9 +1,9 @@ [versions] accompanist = "0.32.0" -androidGradlePlugin = "8.2.2" +androidGradlePlugin = "8.4.0" androidx-activity-compose = "1.9.0-alpha03" androidx-appcompat = "1.6.1" -androidx-compose-bom = "2024.04.01" +androidx-compose-bom = "2024.05.00" androidx-compose-ui-test = "1.7.0-alpha03" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" @@ -23,7 +23,7 @@ coil = "2.5.0" # @keep compileSdk = "34" compose-compiler = "1.5.4" -compose-latest = "1.7.0-alpha07" +compose-latest = "1.7.0-beta01" coroutines = "1.7.3" google-maps = "18.2.0" gradle-versions = "0.51.0" @@ -52,7 +52,7 @@ 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" } +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" } @@ -67,7 +67,7 @@ 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" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } -androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.0-alpha05" +androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.0-beta01" androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 1af9e0930..b81fa3bb9 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,7 @@ +#Tue May 14 19:06:12 BST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME From 960f6de1f6f450e8940db3dc7ff755356e60dba2 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Fri, 24 May 2024 13:19:46 +0100 Subject: [PATCH 26/59] Added snippet for AnimatedVisibility usage with Shared elements (#272) * Added AnimatedVisibility shared element examples. * Apply Spotless * Switch to using LazyColumn instead of Grid as it has better animation support at present. * Apply Spotless * Fixed import. * Apply Spotless * Seperate samples into different files, simplify snippet. * Apply Spotless --------- Co-authored-by: riggaroo --- ...matedVisibilitySharedElementBlurSnippet.kt | 168 +++++++++++++ ...AnimatedVisibilitySharedElementSnippets.kt | 232 ++++++++++++++++++ .../BasicSharedElementSnippets.kt | 56 +++++ .../CustomizeSharedElementsSnippets.kt | 9 + .../SharedElementsWithNavigationSnippets.kt | 3 +- .../compose/snippets/landing/LandingScreen.kt | 17 +- .../snippets/lists/LazyListSnippets.kt | 1 + 7 files changed, 480 insertions(+), 6 deletions(-) create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementBlurSnippet.kt create mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementSnippets.kt diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementBlurSnippet.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementBlurSnippet.kt new file mode 100644 index 000000000..92bee9098 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementBlurSnippet.kt @@ -0,0 +1,168 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.BoundsTransform +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.core.animateFloatAsState +import androidx.compose.animation.core.tween +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.foundation.background +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.itemsIndexed +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.draw.drawWithContent +import androidx.compose.ui.graphics.BlurEffect +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.graphics.TileMode +import androidx.compose.ui.graphics.layer.GraphicsLayer +import androidx.compose.ui.graphics.layer.drawLayer +import androidx.compose.ui.graphics.rememberGraphicsLayer +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.R + +private val listSnacks = listOf( + Snack("Cupcake", "", R.drawable.cupcake), + Snack("Donut", "", R.drawable.donut), + Snack("Eclair", "", R.drawable.eclair), + Snack("Froyo", "", R.drawable.froyo), + Snack("Gingerbread", "", R.drawable.gingerbread), + Snack("Honeycomb", "", R.drawable.honeycomb), +) + +private fun animationSpec() = tween(durationMillis = 500) +private val boundsTransition = BoundsTransform { _, _ -> animationSpec() } +private val shapeForSharedElement = RoundedCornerShape(16.dp) + +@OptIn(ExperimentalSharedTransitionApi::class) +@Preview +@Composable +private fun AnimatedVisibilitySharedElementBlurLayer() { + var selectedSnack by remember { mutableStateOf(null) } + val graphicsLayer = rememberGraphicsLayer() + val animateBlurRadius = animateFloatAsState( + targetValue = if (selectedSnack != null) 20f else 0f, + label = "blur radius", + animationSpec = animationSpec() + ) + + SharedTransitionLayout(modifier = Modifier.fillMaxSize()) { + LazyColumn( + modifier = Modifier + .fillMaxSize() + .background(Color.LightGray.copy(alpha = 0.5f)) + .blurLayer(graphicsLayer, animateBlurRadius.value) + .padding(16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp), + ) { + itemsIndexed(listSnacks, key = { index, snack -> snack.name }) { index, snack -> + SnackItem( + snack = snack, + onClick = { + selectedSnack = snack + }, + visible = selectedSnack != snack, + modifier = Modifier.animateItem( + placementSpec = animationSpec(), + fadeOutSpec = animationSpec(), + fadeInSpec = animationSpec() + ) + ) + } + } + + SnackEditDetails( + snack = selectedSnack, + onConfirmClick = { + selectedSnack = null + } + ) + } +} + +fun Modifier.blurLayer(layer: GraphicsLayer, radius: Float): Modifier { + return if (radius == 0f) this else this.drawWithContent { + layer.apply { + record { + this@drawWithContent.drawContent() + } + // will apply a blur on API 31+ + this.renderEffect = BlurEffect(radius, radius, TileMode.Decal) + } + drawLayer(layer) + } +} +@Composable +fun SharedTransitionScope.SnackItem( + snack: Snack, + visible: Boolean, + onClick: () -> Unit, + modifier: Modifier = Modifier +) { + AnimatedVisibility( + modifier = modifier, + visible = visible, + enter = fadeIn(animationSpec = animationSpec()) + scaleIn( + animationSpec() + ), + exit = fadeOut(animationSpec = animationSpec()) + scaleOut( + animationSpec() + ) + ) { + Box( + modifier = Modifier + .sharedBounds( + sharedContentState = rememberSharedContentState(key = "${snack.name}-bounds"), + animatedVisibilityScope = this, + boundsTransform = boundsTransition, + clipInOverlayDuringTransition = OverlayClip(shapeForSharedElement) + ) + .background(Color.White, shapeForSharedElement) + .clip(shapeForSharedElement) + ) { + SnackContents( + snack = snack, + modifier = Modifier.sharedElement( + state = rememberSharedContentState(key = snack.name), + animatedVisibilityScope = this@AnimatedVisibility, + boundsTransform = boundsTransition, + ), + onClick = onClick + ) + } + } +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementSnippets.kt new file mode 100644 index 000000000..955dbe460 --- /dev/null +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/AnimatedVisibilitySharedElementSnippets.kt @@ -0,0 +1,232 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:OptIn(ExperimentalSharedTransitionApi::class, ExperimentalSharedTransitionApi::class) + +package com.example.compose.snippets.animations.sharedelement + +import androidx.compose.animation.AnimatedContent +import androidx.compose.animation.AnimatedVisibility +import androidx.compose.animation.ExperimentalSharedTransitionApi +import androidx.compose.animation.SharedTransitionLayout +import androidx.compose.animation.SharedTransitionScope +import androidx.compose.animation.fadeIn +import androidx.compose.animation.fadeOut +import androidx.compose.animation.scaleIn +import androidx.compose.animation.scaleOut +import androidx.compose.animation.togetherWith +import androidx.compose.foundation.Image +import androidx.compose.foundation.background +import androidx.compose.foundation.clickable +import androidx.compose.foundation.interaction.MutableInteractionSource +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box +import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.aspectRatio +import androidx.compose.foundation.layout.fillMaxSize +import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.padding +import androidx.compose.foundation.layout.wrapContentWidth +import androidx.compose.foundation.lazy.LazyColumn +import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.TextButton +import androidx.compose.runtime.Composable +import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf +import androidx.compose.runtime.remember +import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment +import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.graphics.Color +import androidx.compose.ui.layout.ContentScale +import androidx.compose.ui.res.painterResource +import androidx.compose.ui.tooling.preview.Preview +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.R + +private val listSnacks = listOf( + Snack("Cupcake", "", R.drawable.cupcake), + Snack("Donut", "", R.drawable.donut), + Snack("Eclair", "", R.drawable.eclair), + Snack("Froyo", "", R.drawable.froyo), + Snack("Gingerbread", "", R.drawable.gingerbread), + Snack("Honeycomb", "", R.drawable.honeycomb), +) + +private val shapeForSharedElement = RoundedCornerShape(16.dp) + +@OptIn(ExperimentalSharedTransitionApi::class) +@Preview +@Composable +private fun AnimatedVisibilitySharedElementShortenedExample() { + // [START android_compose_shared_elements_animated_visibility] + var selectedSnack by remember { mutableStateOf(null) } + + SharedTransitionLayout(modifier = Modifier.fillMaxSize()) { + LazyColumn( + // [START_EXCLUDE] + modifier = Modifier + .fillMaxSize() + .background(Color.LightGray.copy(alpha = 0.5f)) + .padding(16.dp), + verticalArrangement = Arrangement.spacedBy(8.dp) + // [END_EXCLUDE] + ) { + items(listSnacks) { snack -> + AnimatedVisibility( + visible = snack != selectedSnack, + enter = fadeIn() + scaleIn(), + exit = fadeOut() + scaleOut(), + modifier = Modifier.animateItem() + ) { + Box( + modifier = Modifier + .sharedBounds( + sharedContentState = rememberSharedContentState(key = "${snack.name}-bounds"), + // Using the scope provided by AnimatedVisibility + animatedVisibilityScope = this, + clipInOverlayDuringTransition = OverlayClip(shapeForSharedElement) + ) + .background(Color.White, shapeForSharedElement) + .clip(shapeForSharedElement) + ) { + SnackContents( + snack = snack, + modifier = Modifier.sharedElement( + state = rememberSharedContentState(key = snack.name), + animatedVisibilityScope = this@AnimatedVisibility + ), + onClick = { + selectedSnack = snack + } + ) + } + } + } + } + // Contains matching AnimatedContent with sharedBounds modifiers. + SnackEditDetails( + snack = selectedSnack, + onConfirmClick = { + selectedSnack = null + } + ) + } + // [END android_compose_shared_elements_animated_visibility] +} + +@Composable +fun SharedTransitionScope.SnackEditDetails( + snack: Snack?, + modifier: Modifier = Modifier, + onConfirmClick: () -> Unit +) { + AnimatedContent( + modifier = modifier, + targetState = snack, + transitionSpec = { + fadeIn() togetherWith fadeOut() + }, + label = "SnackEditDetails" + ) { targetSnack -> + Box( + modifier = Modifier.fillMaxSize(), + contentAlignment = Alignment.Center + ) { + if (targetSnack != null) { + Box( + modifier = Modifier + .fillMaxSize() + .clickable { + onConfirmClick() + } + .background(Color.Black.copy(alpha = 0.5f)) + ) + Column( + modifier = Modifier + .padding(horizontal = 16.dp) + .sharedBounds( + sharedContentState = rememberSharedContentState(key = "${targetSnack.name}-bounds"), + animatedVisibilityScope = this@AnimatedContent, + clipInOverlayDuringTransition = OverlayClip(shapeForSharedElement) + ) + .background(Color.White, shapeForSharedElement) + .clip(shapeForSharedElement) + ) { + + SnackContents( + snack = targetSnack, + modifier = Modifier.sharedElement( + state = rememberSharedContentState(key = targetSnack.name), + animatedVisibilityScope = this@AnimatedContent, + ), + onClick = { + onConfirmClick() + } + ) + Row( + Modifier + .fillMaxWidth() + .padding(bottom = 8.dp, end = 8.dp), + horizontalArrangement = Arrangement.End + ) { + TextButton(onClick = { onConfirmClick() }) { + Text(text = "Save changes") + } + } + } + } + } + } +} + +@Composable +fun SnackContents( + snack: Snack, + modifier: Modifier = Modifier, + onClick: () -> Unit +) { + Column( + modifier = modifier + .clickable( + interactionSource = remember { MutableInteractionSource() }, + indication = null + ) { + onClick() + } + ) { + Image( + painter = painterResource(id = snack.image), + modifier = Modifier + .fillMaxWidth() + .aspectRatio(20f / 9f), + contentScale = ContentScale.Crop, + contentDescription = null + ) + Text( + text = snack.name, + modifier = Modifier + .wrapContentWidth() + .padding(8.dp), + style = MaterialTheme.typography.titleSmall + ) + } +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt index fa7efb58b..c246a8098 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/BasicSharedElementSnippets.kt @@ -39,6 +39,8 @@ import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.CompositionLocalProvider +import androidx.compose.runtime.compositionLocalOf import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -441,3 +443,57 @@ private object UniqueKeySnippet { } // [END android_compose_shared_elements_unique_key] } + +// [START android_compose_shared_element_scope] +val LocalNavAnimatedVisibilityScope = compositionLocalOf { null } +val LocalSharedTransitionScope = compositionLocalOf { null } + +@Composable +private fun SharedElementScope_CompositionLocal() { + // An example of how to use composition locals to pass around the shared transition scope, far down your UI tree. + // [START_EXCLUDE] + val state = remember { + mutableStateOf(false) + } + // [END_EXCLUDE] + SharedTransitionLayout { + CompositionLocalProvider( + LocalSharedTransitionScope provides this + ) { + // This could also be your top-level NavHost as this provides an AnimatedContentScope + AnimatedContent(state, label = "Top level AnimatedContent") { targetState -> + CompositionLocalProvider(LocalNavAnimatedVisibilityScope provides this) { + // Now we can access the scopes in any nested composables as follows: + val sharedTransitionScope = LocalSharedTransitionScope.current + ?: throw IllegalStateException("No SharedElementScope found") + val animatedVisibilityScope = LocalNavAnimatedVisibilityScope.current + ?: throw IllegalStateException("No AnimatedVisibility found") + } + // [START_EXCLUDE] + if (targetState.value) { + // do something + } + // [END_EXCLUDE] + } + } + } +} +// [END android_compose_shared_element_scope] + +private object SharedElementScope_Extensions { + // [START android_compose_shared_element_parameters] + @Composable + fun MainContent( + animatedVisibilityScope: AnimatedVisibilityScope, + sharedTransitionScope: SharedTransitionScope + ) { + } + + @Composable + fun Details( + animatedVisibilityScope: AnimatedVisibilityScope, + sharedTransitionScope: SharedTransitionScope + ) { + } + // [END android_compose_shared_element_parameters] +} diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt index 2b6957ac0..3e60c10e8 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/CustomizeSharedElementsSnippets.kt @@ -532,6 +532,15 @@ private fun SharedElement_SkipLookaheadSize() { } } +private val listSnacks = listOf( + Snack("Cupcake", "", R.drawable.cupcake), + Snack("Donut", "", R.drawable.donut), + Snack("Eclair", "", R.drawable.eclair), + Snack("Froyo", "", R.drawable.froyo), + Snack("Gingerbread", "", R.drawable.gingerbread), + Snack("Honeycomb", "", R.drawable.honeycomb), +) + @Preview @Composable fun PlaceholderSizeAnimated_Demo() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt index 09c72ff4b..42662f9ba 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt @@ -54,7 +54,7 @@ import androidx.navigation.compose.rememberNavController import androidx.navigation.navArgument import com.example.compose.snippets.R -val listSnacks = listOf( +private val listSnacks = listOf( Snack("Cupcake", "", R.drawable.cupcake), Snack("Donut", "", R.drawable.donut), Snack("Eclair", "", R.drawable.eclair), @@ -62,6 +62,7 @@ val listSnacks = listOf( Snack("Gingerbread", "", R.drawable.gingerbread), Snack("Honeycomb", "", R.drawable.honeycomb), ) + // [START android_compose_shared_element_predictive_back] @Preview @Composable diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt b/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt index 6b7c1a874..0fcfbf07d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt @@ -16,14 +16,17 @@ package com.example.compose.snippets.landing +import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth +import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material3.Button +import androidx.compose.material3.Divider import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -65,12 +68,11 @@ fun LandingScreen( fun NavigationItems(navigate: (Destination) -> Unit) { LazyColumn( modifier = Modifier - .padding(16.dp) .fillMaxSize(), verticalArrangement = Arrangement.spacedBy(8.dp), horizontalAlignment = Alignment.CenterHorizontally, ) { - items(Destination.values().toList()) { destination -> + items(Destination.entries) { destination -> NavigationItem(destination) { navigate( destination @@ -82,9 +84,14 @@ fun NavigationItems(navigate: (Destination) -> Unit) { @Composable fun NavigationItem(destination: Destination, onClick: () -> Unit) { - Button( - onClick = { onClick() } + Box( + modifier = Modifier + .heightIn(min = 48.dp) + .clickable { + onClick() + } ) { Text(destination.title) + Divider(modifier = Modifier.align(Alignment.BottomCenter)) } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index a4a405b3d..b5a7d0374 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -435,6 +435,7 @@ private fun LazyItemAnimations() { } // [START android_compose_layouts_lazy_column_item_animation] LazyColumn { + // It is important to provide a key to each item to ensure animateItem() works as expected. items(books, key = { it.id }) { Row(Modifier.animateItem()) { // ... From 6846c246a7d31acb0c9780e6dd47b150a3e10625 Mon Sep 17 00:00:00 2001 From: Ben Trengrove Date: Wed, 24 Jul 2024 15:03:00 +1200 Subject: [PATCH 27/59] Add clickable text snippets (#297) --- .../compose/snippets/text/TextSnippets.kt | 48 +++++++++++++++++++ gradle/libs.versions.toml | 2 +- 2 files changed, 49 insertions(+), 1 deletion(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index bfb8b837e..6a704caad 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -42,11 +42,14 @@ import androidx.compose.ui.graphics.Brush import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Color.Companion.Cyan import androidx.compose.ui.graphics.Shadow +import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.AnnotatedString +import androidx.compose.ui.text.LinkAnnotation import androidx.compose.ui.text.ParagraphStyle import androidx.compose.ui.text.PlatformTextStyle import androidx.compose.ui.text.SpanStyle +import androidx.compose.ui.text.TextLinkStyles import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.buildAnnotatedString import androidx.compose.ui.text.font.Font @@ -58,6 +61,7 @@ import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.style.LineHeightStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow +import androidx.compose.ui.text.withLink import androidx.compose.ui.text.withStyle import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.em @@ -577,6 +581,50 @@ private object TextEffectiveStateManagement2 { // [END android_compose_text_state_management] } +// [START android_compose_text_link_1] +@Composable +fun AnnotatedStringWithLinkSample() { + // Display a link in the text + Text( + buildAnnotatedString { + append("Build better apps faster with ") + withLink( + LinkAnnotation.Url( + "https://developer.android.com/jetpack/compose", + TextLinkStyles(style = SpanStyle(color = Color.Blue)) + ) + ) { + append("Jetpack Compose") + } + } + ) +} +// [END android_compose_text_link_1] + +// [START android_compose_text_link_2] +@Composable +fun AnnotatedStringWithListenerSample() { + // Display a link in the text and log metrics whenever user clicks on it. In that case we handle + // the link using openUri method of the LocalUriHandler + val uriHandler = LocalUriHandler.current + Text( + buildAnnotatedString { + append("Build better apps faster with ") + val link = + LinkAnnotation.Url( + "https://developer.android.com/jetpack/compose", + TextLinkStyles(SpanStyle(color = Color.Blue)) + ) { + val url = (it as LinkAnnotation.Url).url + // log some metrics + uriHandler.openUri(url) + } + withLink(link) { append("Jetpack Compose") } + } + ) +} +// [END android_compose_text_link_2] + private val firaSansFamily = FontFamily() val LightBlue = Color(0xFF0066FF) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 3645c7cfb..eb5051682 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -73,7 +73,7 @@ androidx-compose-material3-adaptive-navigation = { module = "androidx.compose.ma 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" } +androidx-compose-ui = { module = "androidx.compose.ui:ui", version.ref = "compose-latest" } androidx-compose-ui-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.0-beta01" androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } From 536e487893db1a7ed515377e852971429d34d21e Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Mon, 29 Jul 2024 10:59:44 +0100 Subject: [PATCH 28/59] =?UTF-8?q?=F0=9F=A4=96=20Sync=20main=20to=20latest?= =?UTF-8?q?=20(#266)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update CenterAlignedTopAppBar snippet to use centerAlignedTopAppBarColors * Time pickers comments (#295) * Adding advanced examples * Apply Spotless * Adding advanced examples * Rename AdvancedTimePickerExample * Rename AdvancedTimePickerExample --------- Co-authored-by: jakeroseman * Adds preview and breakpoint --------- Co-authored-by: Jamal Eason Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Kat Kuan <843428+kkuan2011@users.noreply.github.com> Co-authored-by: Chiara Chiappini Co-authored-by: Chiara Chiappini From 0442b197546be60722774734e0b91d0960d0fc9d Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Tue, 13 Aug 2024 16:39:49 +0100 Subject: [PATCH 29/59] =?UTF-8?q?=F0=9F=A4=96=20Sync=20main=20to=20latest?= =?UTF-8?q?=20(#301)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update CenterAlignedTopAppBar snippet to use centerAlignedTopAppBarColors * Time pickers comments (#295) * Adding advanced examples * Apply Spotless * Adding advanced examples * Rename AdvancedTimePickerExample * Rename AdvancedTimePickerExample --------- Co-authored-by: jakeroseman * Adds preview and breakpoint * Updating DeviceConfigurationOverride snippet comment (#232) * Timepickers redux (#296) * Reworking the time picker examples to be more friendly to copy-pasting * Apply Spotless * Updating the time picker examples to be more copy-pastable * Change in-use tag name back to the current form. * Apply Spotless * Renaming region tags * Renaming region tags --------- Co-authored-by: jakeroseman * Date pickers (#302) * Reworking the time picker examples to be more friendly to copy-pasting * Apply Spotless * Updating the time picker examples to be more copy-pastable * Change in-use tag name back to the current form. * Apply Spotless * Renaming region tags * Renaming region tags * Adding date picker snippets * Apply Spotless * fixing region tags * Adding additional range tags --------- Co-authored-by: jakeroseman * Break long instruction in 2 lines to optimize for DAC * Prevent redrawing twice and running timer when compositions =0 (#304) --------- Co-authored-by: Jamal Eason Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Kat Kuan <843428+kkuan2011@users.noreply.github.com> Co-authored-by: Chiara Chiappini Co-authored-by: Chiara Chiappini Co-authored-by: Alex Vanyo Co-authored-by: Tomáš Mlynarič From a6cfa3946293840885faea6866738c34ccf1ea0d Mon Sep 17 00:00:00 2001 From: Don Turner Date: Tue, 20 Aug 2024 01:31:12 +0100 Subject: [PATCH 30/59] Snippet updates for type safe navigation APIs --- build.gradle.kts | 1 + compose/snippets/build.gradle.kts | 3 +- .../MigrationCommonScenariosSnippets.kt | 30 +++++++++++++------ gradle/libs.versions.toml | 7 +++-- 4 files changed, 29 insertions(+), 12 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 547023ae7..fe9431c42 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,6 +8,7 @@ plugins { alias(libs.plugins.kapt) apply false alias(libs.plugins.hilt) apply false alias(libs.plugins.kotlin.parcelize) apply false + alias(libs.plugins.kotlin.serialization) apply false } apply("${project.rootDir}/buildscripts/toml-updater-config.gradle") diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index 1902a318a..a43a6f222 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -20,6 +20,7 @@ plugins { alias(libs.plugins.kapt) alias(libs.plugins.hilt) alias(libs.plugins.kotlin.parcelize) + alias(libs.plugins.kotlin.serialization) } android { @@ -83,7 +84,6 @@ dependencies { implementation(composeBom) androidTestImplementation(composeBom) - implementation(libs.androidx.compose.foundation) implementation(libs.androidx.compose.ui) implementation(libs.androidx.compose.ui.util) implementation(libs.androidx.compose.ui.graphics) @@ -139,6 +139,7 @@ dependencies { implementation(libs.androidx.navigation.compose) implementation(libs.hilt.android) implementation(libs.androidx.hilt.navigation.compose) + implementation(libs.kotlinx.serialization.json) implementation(libs.androidx.recyclerview) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt index 6b146981c..07303c377 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt @@ -64,10 +64,12 @@ import androidx.navigation.NavHostController import androidx.navigation.compose.NavHost import androidx.navigation.compose.composable import androidx.navigation.compose.rememberNavController +import androidx.navigation.toRoute import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import kotlinx.coroutines.launch +import kotlinx.serialization.Serializable class RVActivity : ComponentActivity() { private lateinit var composeView: ComposeView @@ -141,6 +143,13 @@ class SampleActivity : ComponentActivity() { } // [END android_compose_interop_migration_common_scenarios_navigation_step_2] +// [START android_compose_interop_migration_common_scenarios_navigation_step_2_1] +@Serializable data object First +@Serializable data class Second(val id: String) +@Serializable data object Third + +// [END android_compose_interop_migration_common_scenarios_navigation_step_2_1] + private object MigrationCommonScenariosNavigationStep3 { // [START android_compose_interop_migration_common_scenarios_navigation_step_3] @Composable @@ -164,7 +173,7 @@ private object MigrationCommonScenariosNavigationStep4 { fun SampleNavHost( navController: NavHostController ) { - NavHost(navController = navController, startDestination = "first") { + NavHost(navController = navController, startDestination = First) { // ... } } @@ -191,11 +200,11 @@ class FirstFragment : Fragment() { fun SampleNavHost( navController: NavHostController ) { - NavHost(navController = navController, startDestination = "first") { - composable("first") { + NavHost(navController = navController, startDestination = First) { + composable { FirstScreen(/* ... */) // EXTRACT TO HERE } - composable("second") { + composable { SecondScreen(/* ... */) } // ... @@ -220,20 +229,22 @@ private object MigrationCommonScenariosNavigationStep7 { fun SampleNavHost( navController: NavHostController ) { - NavHost(navController = navController, startDestination = "first") { - composable("first") { + NavHost(navController = navController, startDestination = First) { + composable { FirstScreen( onButtonClick = { // findNavController().navigate(firstScreenToSecondScreenAction) - navController.navigate("second_screen_route") + navController.navigate(Second(id = "ABC")) } ) } - composable("second") { + composable { backStackEntry -> + val secondRoute = backStackEntry.toRoute() SecondScreen( + id = secondRoute.id, onIconClick = { // findNavController().navigate(secondScreenToThirdScreenAction) - navController.navigate("third_screen_route") + navController.navigate(Third) } ) } @@ -410,6 +421,7 @@ fun SampleApp() { @Composable fun SecondScreen( + id: String = "", onIconClick: () -> Unit = {}, ) { } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index eb5051682..61dce231b 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,7 +14,7 @@ androidx-fragment-ktx = "1.6.2" androidx-glance-appwidget = "1.0.0" androidx-lifecycle-compose = "2.8.0-rc01" androidx-lifecycle-runtime-compose = "2.8.0-rc01" -androidx-navigation = "2.7.7" +androidx-navigation = "2.8.0-beta07" androidx-paging = "3.2.1" androidx-test = "1.5.0" androidx-test-espresso = "3.5.1" @@ -22,7 +22,7 @@ androidx-window = "1.3.0-beta02" androidxHiltNavigationCompose = "1.2.0" coil = "2.5.0" # @keep -compileSdk = "34" +compileSdk = "35" compose-compiler = "1.5.4" coreSplashscreen = "1.0.1" compose-latest = "1.7.0-beta05" @@ -34,6 +34,7 @@ horologist = "0.5.24" junit = "4.13.2" # @pin Update in conjuction with Compose Compiler kotlin = "1.9.20" +kotlinxSerializationJson = "1.6.3" ksp = "1.8.0-1.0.9" maps-compose = "4.3.2" material = "1.4.0-beta01" @@ -120,6 +121,7 @@ junit = { module = "junit:junit", version.ref = "junit" } kotlin-stdlib = { module = "org.jetbrains.kotlin:kotlin-stdlib-jdk8", version.ref = "kotlin" } kotlinx-coroutines-android = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-android", version.ref = "coroutines" } kotlinx-coroutines-test = { module = "org.jetbrains.kotlinx:kotlinx-coroutines-test", version.ref = "coroutines" } +kotlinx-serialization-json = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerializationJson" } androidx-media3-common = { group = "androidx.media3", name = "media3-common", version.ref = "media3" } androidx-media3-exoplayer = { group = "androidx.media3", name = "media3-exoplayer", version.ref = "media3" } play-services-wearable = { module = "com.google.android.gms:play-services-wearable", version.ref = "playServicesWearable" } @@ -134,4 +136,5 @@ hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" } kotlin-parcelize = { id = "org.jetbrains.kotlin.plugin.parcelize", version.ref = "kotlin" } +kotlin-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" } version-catalog-update = { id = "nl.littlerobots.version-catalog-update", version.ref = "version-catalog-update" } From 750acf30e1a2c96fcaaadaee453f7e192d6e047f Mon Sep 17 00:00:00 2001 From: Don Turner Date: Tue, 20 Aug 2024 09:02:53 +0100 Subject: [PATCH 31/59] Downgrade compileSdk to 34 --- gradle/libs.versions.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 61dce231b..530c1296e 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -14,7 +14,7 @@ androidx-fragment-ktx = "1.6.2" androidx-glance-appwidget = "1.0.0" androidx-lifecycle-compose = "2.8.0-rc01" androidx-lifecycle-runtime-compose = "2.8.0-rc01" -androidx-navigation = "2.8.0-beta07" +androidx-navigation = "2.8.0-rc01" androidx-paging = "3.2.1" androidx-test = "1.5.0" androidx-test-espresso = "3.5.1" @@ -22,7 +22,7 @@ androidx-window = "1.3.0-beta02" androidxHiltNavigationCompose = "1.2.0" coil = "2.5.0" # @keep -compileSdk = "35" +compileSdk = "34" compose-compiler = "1.5.4" coreSplashscreen = "1.0.1" compose-latest = "1.7.0-beta05" From c5d4717af947605ad37cb5794943437bcea19bc0 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Tue, 27 Aug 2024 13:41:55 +0100 Subject: [PATCH 32/59] =?UTF-8?q?=F0=9F=A4=96=20Sync=20main=20to=20latest?= =?UTF-8?q?=20(#313)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update CenterAlignedTopAppBar snippet to use centerAlignedTopAppBarColors * Time pickers comments (#295) * Adding advanced examples * Apply Spotless * Adding advanced examples * Rename AdvancedTimePickerExample * Rename AdvancedTimePickerExample --------- Co-authored-by: jakeroseman * Adds preview and breakpoint * Updating DeviceConfigurationOverride snippet comment (#232) * Timepickers redux (#296) * Reworking the time picker examples to be more friendly to copy-pasting * Apply Spotless * Updating the time picker examples to be more copy-pastable * Change in-use tag name back to the current form. * Apply Spotless * Renaming region tags * Renaming region tags --------- Co-authored-by: jakeroseman * Date pickers (#302) * Reworking the time picker examples to be more friendly to copy-pasting * Apply Spotless * Updating the time picker examples to be more copy-pastable * Change in-use tag name back to the current form. * Apply Spotless * Renaming region tags * Renaming region tags * Adding date picker snippets * Apply Spotless * fixing region tags * Adding additional range tags --------- Co-authored-by: jakeroseman * Break long instruction in 2 lines to optimize for DAC * Prevent redrawing twice and running timer when compositions =0 (#304) * Allow Spotless to make commits on a user's behalf (#312) See https://github.com/diffplug/spotless/issues/1242 --------- Co-authored-by: Jamal Eason Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Kat Kuan <843428+kkuan2011@users.noreply.github.com> Co-authored-by: Chiara Chiappini Co-authored-by: Chiara Chiappini Co-authored-by: Alex Vanyo Co-authored-by: Tomáš Mlynarič Co-authored-by: Jolanda Verhoef From 74aaf255a59f35a46f954ba702e34e266b654c66 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Wed, 28 Aug 2024 13:04:15 +0100 Subject: [PATCH 33/59] Latest beta06 updates for Compose (#300) * Do latest 1.7.0-beta06 version updates * Apply Spotless * Code cleanup * Apply Spotless * Fix broken test * Fix tests --------- Co-authored-by: riggaroo --- .../bluetoothle/kotlin/MainActivity.kt | 1 - build.gradle.kts | 1 + compose/recomposehighlighter/build.gradle.kts | 4 +- compose/snippets/build.gradle.kts | 5 +-- .../compose/snippets/SnippetsActivity.kt | 2 +- .../SampleListDetailPaneScaffold.kt | 2 - .../SampleNavigationSuiteScaffold.kt | 3 -- .../animations/AnimationQuickGuide.kt | 2 - .../snippets/animations/AnimationSnippets.kt | 19 ++++----- .../SharedElementsWithNavigationSnippets.kt | 6 +-- .../architecture/ArchitectureSnippets.kt | 17 ++++---- .../compose/snippets/components/Card.kt | 4 +- .../compose/snippets/components/Chip.kt | 3 -- .../compose/snippets/components/Dialog.kt | 2 - .../designsystems/AppCompatThemeSnippets.kt | 38 ----------------- .../designsystems/CustomDesignSystem.kt | 1 - .../designsystems/Material2Snippets.kt | 6 +-- .../designsystems/Material3Snippets.kt | 3 -- .../designsystems/MdcThemeSnippets.kt | 38 ----------------- .../snippets/graphics/BrushExampleSnippets.kt | 2 - .../snippets/graphics/CanvasSnippets.kt | 6 --- .../snippets/graphics/ShapesSnippets.kt | 19 +++++---- .../MigrationCommonScenariosSnippets.kt | 15 ++++--- .../compose/snippets/kotlin/KotlinSnippets.kt | 2 - .../compose/snippets/landing/LandingScreen.kt | 4 +- .../layouts/AdaptiveLayoutSnippets.kt | 2 - .../snippets/layouts/CommonLayoutExamples.kt | 3 -- .../snippets/layouts/InsetsSnippets.kt | 3 -- .../layouts/MaterialLayoutSnippets.kt | 4 +- .../compose/snippets/layouts/PagerSnippets.kt | 8 ---- .../snippets/lists/LazyListSnippets.kt | 6 --- .../snippets/resources/ResourcesSnippets.kt | 2 - .../sideeffects/SideEffectsSnippets.kt | 2 +- .../snippets/state/StateOverviewSnippets.kt | 4 +- .../touchinput/focus/FocusSnippets.kt | 6 --- .../touchinput/gestures/GesturesSnippets.kt | 2 - .../touchinput/pointerinput/TapAndPress.kt | 2 - gradle/libs.versions.toml | 42 +++++++++---------- .../testing/DispatchersOutsideTests.kt | 23 ++++++---- .../testing/HomeViewModelTestUsingRule.kt | 1 - .../coroutines/testing/UserStateTest.kt | 3 +- shared/src/main/res/layout/activity_main.xml | 31 -------------- wear/build.gradle.kts | 5 +-- 43 files changed, 92 insertions(+), 262 deletions(-) delete mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/designsystems/AppCompatThemeSnippets.kt delete mode 100644 compose/snippets/src/main/java/com/example/compose/snippets/designsystems/MdcThemeSnippets.kt delete mode 100644 shared/src/main/res/layout/activity_main.xml diff --git a/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt b/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt index c79aae135..5555c720d 100644 --- a/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt +++ b/bluetoothle/src/main/java/com/sample/android/bluetoothle/kotlin/MainActivity.kt @@ -6,7 +6,6 @@ import android.content.Context import android.content.Intent import android.os.Bundle import androidx.appcompat.app.AppCompatActivity -import com.sample.android.bluetoothle.java.MainActivity class MainActivity : AppCompatActivity() { diff --git a/build.gradle.kts b/build.gradle.kts index fe9431c42..22d9028a4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -8,6 +8,7 @@ plugins { alias(libs.plugins.kapt) apply false alias(libs.plugins.hilt) apply false alias(libs.plugins.kotlin.parcelize) apply false + alias(libs.plugins.compose.compiler) apply false alias(libs.plugins.kotlin.serialization) apply false } diff --git a/compose/recomposehighlighter/build.gradle.kts b/compose/recomposehighlighter/build.gradle.kts index 1bbdf6ea4..fe8b79aff 100644 --- a/compose/recomposehighlighter/build.gradle.kts +++ b/compose/recomposehighlighter/build.gradle.kts @@ -1,6 +1,7 @@ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) + alias(libs.plugins.compose.compiler) } android { compileSdk = libs.versions.compileSdk.get().toInt() @@ -40,9 +41,6 @@ android { viewBinding = true } - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get() - } } dependencies { val composeBom = platform(libs.androidx.compose.bom) diff --git a/compose/snippets/build.gradle.kts b/compose/snippets/build.gradle.kts index a43a6f222..5d2b661fd 100644 --- a/compose/snippets/build.gradle.kts +++ b/compose/snippets/build.gradle.kts @@ -20,6 +20,7 @@ plugins { alias(libs.plugins.kapt) alias(libs.plugins.hilt) alias(libs.plugins.kotlin.parcelize) + alias(libs.plugins.compose.compiler) alias(libs.plugins.kotlin.serialization) } @@ -63,10 +64,6 @@ android { viewBinding = true } - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get() - } - packaging.resources { // Multiple dependency bring these files in. Exclude them to enable // our test APK to build (has no effect on our AARs) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt index 918de9920..de8150f00 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/SnippetsActivity.kt @@ -32,6 +32,7 @@ import com.example.compose.snippets.animations.sharedelement.PlaceholderSizeAnim import com.example.compose.snippets.components.AppBarExamples import com.example.compose.snippets.components.BadgeExamples import com.example.compose.snippets.components.ButtonExamples +import com.example.compose.snippets.components.CardExamples import com.example.compose.snippets.components.CheckboxExamples import com.example.compose.snippets.components.ChipExamples import com.example.compose.snippets.components.ComponentsScreen @@ -52,7 +53,6 @@ import com.example.compose.snippets.landing.LandingScreen import com.example.compose.snippets.navigation.Destination import com.example.compose.snippets.navigation.TopComponentsDestination import com.example.compose.snippets.ui.theme.SnippetsTheme -import com.example.topcomponents.CardExamples class SnippetsActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt index 68c14dfd8..b79f7ee71 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleListDetailPaneScaffold.kt @@ -35,8 +35,6 @@ 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.getValue -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.tooling.preview.Preview diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleNavigationSuiteScaffold.kt b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleNavigationSuiteScaffold.kt index f5c461f6c..76006e684 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleNavigationSuiteScaffold.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/adaptivelayouts/SampleNavigationSuiteScaffold.kt @@ -14,8 +14,6 @@ * limitations under the License. */ -@file:OptIn(ExperimentalMaterial3AdaptiveNavigationSuiteApi::class) - package com.example.compose.snippets.adaptivelayouts import androidx.annotation.StringRes @@ -29,7 +27,6 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.material3.NavigationBarItemDefaults import androidx.compose.material3.Text import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo -import androidx.compose.material3.adaptive.navigationsuite.ExperimentalMaterial3AdaptiveNavigationSuiteApi import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteDefaults import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffold import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteScaffoldDefaults diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt index 297f579a4..7c6493578 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationQuickGuide.kt @@ -87,7 +87,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.drawBehind @@ -720,7 +719,6 @@ private fun LoadingScreen() { } } -@OptIn(ExperimentalComposeUiApi::class) @Preview @Composable fun AnimationLayout() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt index 80c53540d..08c699818 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt @@ -50,6 +50,7 @@ import androidx.compose.animation.core.createChildTransition import androidx.compose.animation.core.infiniteRepeatable import androidx.compose.animation.core.keyframes import androidx.compose.animation.core.rememberInfiniteTransition +import androidx.compose.animation.core.rememberTransition import androidx.compose.animation.core.repeatable import androidx.compose.animation.core.snap import androidx.compose.animation.core.spring @@ -65,7 +66,7 @@ import androidx.compose.animation.graphics.vector.AnimatedImageVector import androidx.compose.animation.shrinkVertically import androidx.compose.animation.slideInVertically import androidx.compose.animation.slideOutVertically -import androidx.compose.animation.with +import androidx.compose.animation.togetherWith import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.Image import androidx.compose.foundation.background @@ -190,7 +191,6 @@ private fun AnimatedVisibilityMutable() { // [END android_compose_animations_animated_visibility_mutable] } -@OptIn(ExperimentalAnimationApi::class) @Composable @Preview private fun AnimatedVisibilityAnimateEnterExitChildren() { @@ -222,7 +222,6 @@ private fun AnimatedVisibilityAnimateEnterExitChildren() { // [END android_compose_animations_animated_visibility_animate_enter_exit_children] } -@OptIn(ExperimentalAnimationApi::class) @Preview @Composable private fun AnimatedVisibilityTransition() { @@ -259,7 +258,6 @@ private fun AnimateAsStateSimple() { // [END android_compose_animations_animate_as_state] } -@OptIn(ExperimentalAnimationApi::class) @Preview @Composable private fun AnimatedContentSimple() { @@ -277,7 +275,6 @@ private fun AnimatedContentSimple() { // [END android_compose_animations_animated_content_simple] } -@OptIn(ExperimentalAnimationApi::class) @Composable private fun AnimatedContentTransitionSpec(count: Int) { // [START android_compose_animations_animated_content_transition_spec] @@ -288,12 +285,12 @@ private fun AnimatedContentTransitionSpec(count: Int) { if (targetState > initialState) { // If the target number is larger, it slides up and fades in // while the initial (smaller) number slides up and fades out. - slideInVertically { height -> height } + fadeIn() with + slideInVertically { height -> height } + fadeIn() togetherWith slideOutVertically { height -> -height } + fadeOut() } else { // If the target number is smaller, it slides down and fades in // while the initial number slides down and fades out. - slideInVertically { height -> -height } + fadeIn() with + slideInVertically { height -> -height } + fadeIn() togetherWith slideOutVertically { height -> height } + fadeOut() }.using( // Disable clipping since the faded slide-in/out should @@ -318,7 +315,7 @@ private fun AnimatedContentSizeTransform() { AnimatedContent( targetState = expanded, transitionSpec = { - fadeIn(animationSpec = tween(150, 150)) with + fadeIn(animationSpec = tween(150, 150)) togetherWith fadeOut(animationSpec = tween(150)) using SizeTransform { initialSize, targetSize -> if (targetState) { @@ -431,7 +428,7 @@ private object UpdateTransitionEnumState { // Start in collapsed state and immediately animate to expanded var currentState = remember { MutableTransitionState(BoxState.Collapsed) } currentState.targetState = BoxState.Expanded - val transition = updateTransition(currentState, label = "box state") + val transition = rememberTransition(currentState, label = "box state") // …… // [END android_compose_animations_transitions_state] } @@ -663,8 +660,8 @@ private fun AnimationSpecKeyframe() { targetValue = 1f, animationSpec = keyframes { durationMillis = 375 - 0.0f at 0 with LinearOutSlowInEasing // for 0-15 ms - 0.2f at 15 with FastOutLinearInEasing // for 15-75 ms + 0.0f at 0 using LinearOutSlowInEasing // for 0-15 ms + 0.2f at 15 using FastOutLinearInEasing // for 15-75 ms 0.4f at 75 // ms 0.4f at 225 // ms } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt index 42662f9ba..da1d178fb 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/sharedelement/SharedElementsWithNavigationSnippets.kt @@ -118,7 +118,7 @@ private fun DetailsScreen( painterResource(id = snack.image), contentDescription = snack.description, contentScale = ContentScale.Crop, - modifier = Modifier.Companion + modifier = Modifier .sharedElement( sharedTransitionScope.rememberSharedContentState(key = "image-$id"), animatedVisibilityScope = animatedContentScope @@ -129,7 +129,7 @@ private fun DetailsScreen( Text( snack.name, fontSize = 18.sp, modifier = - Modifier.Companion + Modifier .sharedElement( sharedTransitionScope.rememberSharedContentState(key = "text-$id"), animatedVisibilityScope = animatedContentScope @@ -164,7 +164,7 @@ private fun HomeScreen( painterResource(id = item.image), contentDescription = item.description, contentScale = ContentScale.Crop, - modifier = Modifier.Companion + modifier = Modifier .sharedElement( sharedTransitionScope.rememberSharedContentState(key = "image-$index"), animatedVisibilityScope = animatedContentScope diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/architecture/ArchitectureSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/architecture/ArchitectureSnippets.kt index b22421ff5..3f9f41c3a 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/architecture/ArchitectureSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/architecture/ArchitectureSnippets.kt @@ -18,13 +18,14 @@ package com.example.compose.snippets.architecture import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.wrapContentSize -import androidx.compose.material.Icon -import androidx.compose.material.IconButton -import androidx.compose.material.OutlinedTextField -import androidx.compose.material.Text -import androidx.compose.material.TopAppBar import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.automirrored.filled.ArrowBack +import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.Icon +import androidx.compose.material3.IconButton +import androidx.compose.material3.OutlinedTextField +import androidx.compose.material3.Text +import androidx.compose.material3.TopAppBar import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.getValue @@ -70,7 +71,7 @@ private object ArchitectureSnippets2 { private object ArchitectureSnippets3 { val localizedString = "" - + @OptIn(ExperimentalMaterial3Api::class) // [START android_compose_architecture_architecture3] @Composable fun MyAppTopAppBar(topAppBarText: String, onBackPressed: () -> Unit) { @@ -87,7 +88,7 @@ private object ArchitectureSnippets3 { navigationIcon = { IconButton(onClick = onBackPressed) { Icon( - Icons.Filled.ArrowBack, + Icons.AutoMirrored.Filled.ArrowBack, contentDescription = localizedString ) } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt index 1259685ef..1b755819b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Card.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -package com.example.topcomponents +package com.example.compose.snippets.components import android.util.Log import androidx.compose.foundation.BorderStroke @@ -27,7 +27,6 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.ElevatedCard -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedCard import androidx.compose.material3.Text @@ -55,7 +54,6 @@ fun CardExamples() { } } -@OptIn(ExperimentalMaterial3Api::class) // [START android_compose_components_customcard] @Composable fun CustomCardExample(event: () -> Unit) { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Chip.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Chip.kt index 0737ddc8b..36533db75 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/Chip.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Chip.kt @@ -29,7 +29,6 @@ import androidx.compose.material.icons.filled.Person import androidx.compose.material.icons.filled.Settings import androidx.compose.material3.AssistChip import androidx.compose.material3.AssistChipDefaults -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChipDefaults import androidx.compose.material3.Icon @@ -86,7 +85,6 @@ fun AssistChipExample() { } // [END android_compose_components_assistchip] -@OptIn(ExperimentalMaterial3Api::class) @Preview // [START android_compose_components_filterchip] @Composable @@ -116,7 +114,6 @@ fun FilterChipExample() { // You could set this up similarly to the filter chip above and have it toggleable, but this is // an example of a chip that can dismiss with a click. -@OptIn(ExperimentalMaterial3Api::class) // [START android_compose_components_inputchip] @Composable fun InputChipExample( diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt b/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt index b2ab9b723..beb0356b9 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/components/Dialog.kt @@ -32,7 +32,6 @@ import androidx.compose.material.icons.filled.Info import androidx.compose.material3.AlertDialog import androidx.compose.material3.Button import androidx.compose.material3.Card -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface @@ -220,7 +219,6 @@ fun DialogWithImage( // [END android_compose_components_dialogwithimage] // [START android_compose_components_alertdialog] -@OptIn(ExperimentalMaterial3Api::class) @Composable fun AlertDialogExample( onDismissRequest: () -> Unit, diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/AppCompatThemeSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/AppCompatThemeSnippets.kt deleted file mode 100644 index 56cf8e370..000000000 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/AppCompatThemeSnippets.kt +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.compose.snippets.designsystems - -import android.os.Bundle -import androidx.activity.compose.setContent -import androidx.appcompat.app.AppCompatActivity -// [START android_compose_designsystems_interop_appcompattheme] -import com.google.accompanist.themeadapter.appcompat.AppCompatTheme - -class AppCompatThemeExample : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContent { - // Colors and typography have been read from the - // View-based theme used in this Activity - // Shapes are the default for M2 as this didn't exist in M1 - AppCompatTheme { - // Your app-level composable here - } - } - } -} -// [END android_compose_designsystems_interop_appcompattheme] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt index c9489e455..f2ed138e3 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt @@ -38,7 +38,6 @@ import androidx.compose.ui.text.TextStyle import androidx.compose.ui.unit.Dp import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp -import com.example.compose.snippets.designsystems.FullyCustomDesignSystem.CustomTheme.elevation /* * Copyright 2022 The Android Open Source Project diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material2Snippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material2Snippets.kt index 540af22e3..e838a1b7f 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material2Snippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material2Snippets.kt @@ -14,7 +14,7 @@ * limitations under the License. */ -@file:Suppress("unused", "DEPRECATION_ERROR") +@file:Suppress("unused", "DEPRECATION_ERROR", "UsingMaterialAndMaterial3Libraries") package com.example.compose.snippets.designsystems @@ -38,7 +38,7 @@ import androidx.compose.material.Typography import androidx.compose.material.contentColorFor import androidx.compose.material.darkColors import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.lightColors import androidx.compose.material.primarySurface import androidx.compose.material.ripple.LocalRippleTheme @@ -158,7 +158,7 @@ fun ColorUsage() { CompositionLocalProvider(LocalContentAlpha provides ContentAlpha.disabled) { Icon( // [START_EXCLUDE] - Icons.Filled.ArrowBack, + Icons.AutoMirrored.Filled.ArrowBack, contentDescription = null // [END_EXCLUDE] ) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt index 18f1ceb94..5d5d72d37 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/Material3Snippets.kt @@ -30,7 +30,6 @@ import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults -import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.FloatingActionButton import androidx.compose.material3.Icon @@ -53,7 +52,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.RectangleShape @@ -72,7 +70,6 @@ import com.example.compose.snippets.ui.theme.Typography private object Material3Snippets { // [START android_compose_material3_experimental_annotation] // import androidx.compose.material3.ExperimentalMaterial3Api - @OptIn(ExperimentalMaterial3Api::class) @Composable fun AppComposable() { // M3 composables diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/MdcThemeSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/MdcThemeSnippets.kt deleted file mode 100644 index 514b9af03..000000000 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/MdcThemeSnippets.kt +++ /dev/null @@ -1,38 +0,0 @@ -/* - * Copyright 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.example.compose.snippets.designsystems - -import android.os.Bundle -import androidx.activity.compose.setContent -import androidx.appcompat.app.AppCompatActivity -// [START android_compose_designsystems_interop_mdctheme] -import com.google.accompanist.themeadapter.material.MdcTheme - -class MdcThemeExample : AppCompatActivity() { - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - // Use MdcTheme instead of M2 MaterialTheme - // Colors, typography, and shapes have been read from the - // View-based theme used in this Activity - setContent { - MdcTheme { - // Your app-level composable here - } - } - } -} -// [END android_compose_designsystems_interop_mdctheme] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/BrushExampleSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/BrushExampleSnippets.kt index 0aaf13b93..23a6a58ee 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/BrushExampleSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/BrushExampleSnippets.kt @@ -51,7 +51,6 @@ import androidx.compose.ui.graphics.TileMode import androidx.compose.ui.graphics.drawscope.inset import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.imageResource -import androidx.compose.ui.text.ExperimentalTextApi import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.tooling.preview.Preview @@ -244,7 +243,6 @@ fun GraphicsBrushSizeRecreationExample() { // [END android_compose_graphics_brush_recreation] } -@OptIn(ExperimentalTextApi::class) @Preview @Composable fun GraphicsImageBrush() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/CanvasSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/CanvasSnippets.kt index 74e1a4d39..4b53db6e6 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/CanvasSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/CanvasSnippets.kt @@ -16,7 +16,6 @@ package com.example.compose.snippets.graphics -import android.graphics.Canvas import android.graphics.drawable.ShapeDrawable import android.graphics.drawable.shapes.OvalShape import androidx.compose.animation.core.Animatable @@ -48,7 +47,6 @@ import androidx.compose.ui.graphics.drawscope.withTransform import androidx.compose.ui.graphics.nativeCanvas import androidx.compose.ui.res.imageResource import androidx.compose.ui.text.AnnotatedString -import androidx.compose.ui.text.ExperimentalTextApi import androidx.compose.ui.text.TextStyle import androidx.compose.ui.text.drawText import androidx.compose.ui.text.rememberTextMeasurer @@ -59,7 +57,6 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import androidx.compose.ui.unit.toSize import com.example.compose.snippets.R -import java.util.Collections.rotate /* * Copyright 2022 The Android Open Source Project @@ -192,7 +189,6 @@ fun CanvasMultipleTransformations() { // [END android_compose_graphics_canvas_multiple_transforms] } -@OptIn(ExperimentalTextApi::class) @Preview @Composable fun CanvasDrawText() { @@ -238,7 +234,6 @@ fun CanvasDrawPath() { // [END android_compose_graphics_canvas_draw_path] } -@OptIn(ExperimentalTextApi::class) @Preview @Composable fun CanvasMeasureText() { @@ -268,7 +263,6 @@ fun CanvasMeasureText() { // [END android_compose_graphics_canvas_draw_text_measure] } -@OptIn(ExperimentalTextApi::class) @Preview @Composable fun CanvasMeasureTextOverflow() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt index de0a5ee9b..efe9bfa1d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt @@ -38,6 +38,7 @@ import androidx.compose.foundation.layout.size import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable +import androidx.compose.runtime.State import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Alignment @@ -280,7 +281,7 @@ fun List.toPath(path: Path = Path(), scale: Float = 1f): Path { // [START android_compose_morph_clip_shape] class MorphPolygonShape( private val morph: Morph, - private val percentage: Float + private val percentage: State ) : Shape { private val matrix = Matrix() @@ -294,7 +295,7 @@ class MorphPolygonShape( matrix.scale(size.width / 2f, size.height / 2f) matrix.translate(1f, 1f) - val path = morph.toComposePath(progress = percentage) + val path = morph.toComposePath(progress = percentage.value) path.transform(matrix) return Outline.Generic(path) } @@ -333,7 +334,7 @@ private fun MorphOnClick() { modifier = Modifier .size(200.dp) .padding(8.dp) - .clip(MorphPolygonShape(morph, animatedProgress.value)) + .clip(MorphPolygonShape(morph, animatedProgress)) .background(Color(0xFF80DEEA)) .size(200.dp) .clickable(interactionSource = interactionSource, indication = null) { @@ -433,8 +434,8 @@ fun ApplyPolygonAsClipImage() { // [START android_compose_shapes_custom_rotating_morph_shape] class CustomRotatingMorphShape( private val morph: Morph, - private val percentage: Float, - private val rotation: Float + private val percentage: State, + private val rotation: State ) : Shape { private val matrix = Matrix() @@ -447,9 +448,9 @@ class CustomRotatingMorphShape( // By default this stretches the path to the size of the container, if you don't want stretching, use the same size.width for both x and y. matrix.scale(size.width / 2f, size.height / 2f) matrix.translate(1f, 1f) - matrix.rotateZ(rotation) + matrix.rotateZ(rotation.value) - val path = morph.toComposePath(progress = percentage) + val path = morph.toComposePath(progress = percentage.value) path.transform(matrix) return Outline.Generic(path) @@ -505,8 +506,8 @@ private fun RotatingScallopedProfilePic() { .clip( CustomRotatingMorphShape( morph, - animatedProgress.value, - animatedRotation.value + animatedProgress, + animatedRotation ) ) .size(200.dp) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt index 07303c377..59ac0129d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/interop/MigrationCommonScenariosSnippets.kt @@ -36,10 +36,10 @@ import androidx.compose.foundation.pager.rememberPagerState import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Add import androidx.compose.material.icons.filled.Image -import androidx.compose.material3.Divider import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.ModalDrawerSheet import androidx.compose.material3.ModalNavigationDrawer @@ -106,13 +106,13 @@ class RVActivity : ComponentActivity() { } @Composable - fun commonUseCase2(data: List) { + fun CommonUseCase2(data: List) { // [START android_compose_interop_migration_common_scenarios_recyclerview_common_use_case_2] LazyColumn(Modifier.fillMaxSize()) { itemsIndexed(data) { index, d -> ListItem(d) if (index != data.size - 1) { - Divider() + HorizontalDivider() } } } @@ -271,7 +271,6 @@ class CoordinatorLayoutActivity : ComponentActivity() { // [END android_compose_interop_migration_common_scenarios_coordinatorlayout_step2] } - @OptIn(ExperimentalFoundationApi::class) private fun step3() { // [START android_compose_interop_migration_common_scenarios_coordinatorlayout_step3] composeView.setContent { @@ -326,7 +325,7 @@ class CoordinatorLayoutActivity : ComponentActivity() { @OptIn(ExperimentalMaterial3Api::class) @Composable - private fun commonUseCaseToolbars() { + private fun CommonUseCaseToolbars() { // [START android_compose_interop_migration_common_scenarios_coordinatorlayout_toolbars] // 1. Create the TopAppBarScrollBehavior val scrollBehavior = TopAppBarDefaults.enterAlwaysScrollBehavior() @@ -355,13 +354,13 @@ class CoordinatorLayoutActivity : ComponentActivity() { } @Composable - private fun commonUseCaseDrawers() { + private fun CommonUseCaseDrawers() { // [START android_compose_interop_migration_common_scenarios_coordinatorlayout_drawers] ModalNavigationDrawer( drawerContent = { ModalDrawerSheet { Text("Drawer title", modifier = Modifier.padding(16.dp)) - Divider() + HorizontalDivider() NavigationDrawerItem( label = { Text(text = "Drawer Item") }, selected = false, @@ -382,7 +381,7 @@ class CoordinatorLayoutActivity : ComponentActivity() { } @Composable - private fun commonUseCaseSnackbars() { + private fun CommonUseCaseSnackbars() { // [START android_compose_interop_migration_common_scenarios_coordinatorlayout_snackbars] val scope = rememberCoroutineScope() val snackbarHostState = remember { SnackbarHostState() } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/kotlin/KotlinSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/kotlin/KotlinSnippets.kt index 9edd96be3..345ca6648 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/kotlin/KotlinSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/kotlin/KotlinSnippets.kt @@ -43,7 +43,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.draw.drawBehind import androidx.compose.ui.focus.FocusRequester.Companion.createRefs @@ -220,7 +219,6 @@ fun destructuring() { // [END android_compose_kotlin_destructuring] } -@OptIn(ExperimentalComposeUiApi::class) @Composable fun DestructuringCompose() { // [START android_compose_kotlin_destructuring_compose] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt b/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt index 0fcfbf07d..79083bd3b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/landing/LandingScreen.kt @@ -26,7 +26,7 @@ import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material3.Divider +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment @@ -92,6 +92,6 @@ fun NavigationItem(destination: Destination, onClick: () -> Unit) { } ) { Text(destination.title) - Divider(modifier = Modifier.align(Alignment.BottomCenter)) + HorizontalDivider(modifier = Modifier.align(Alignment.BottomCenter)) } } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AdaptiveLayoutSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AdaptiveLayoutSnippets.kt index c66253cd6..7980eae05 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AdaptiveLayoutSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AdaptiveLayoutSnippets.kt @@ -21,7 +21,6 @@ package com.example.compose.snippets.layouts import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row -import androidx.compose.material3.adaptive.ExperimentalMaterial3AdaptiveApi import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -48,7 +47,6 @@ import androidx.window.core.layout.WindowSizeClass * limitations under the License. */ // [START android_compose_adaptive_layouts_basic] -@OptIn(ExperimentalMaterial3AdaptiveApi::class) @Composable fun MyApp( windowSizeClass: WindowSizeClass = currentWindowAdaptiveInfo().windowSizeClass diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CommonLayoutExamples.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CommonLayoutExamples.kt index fd3b257bd..98f5b03af 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CommonLayoutExamples.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CommonLayoutExamples.kt @@ -19,7 +19,6 @@ package com.example.compose.snippets.layouts import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.aspectRatio @@ -53,7 +52,6 @@ import kotlin.random.Random * See the License for the specific language governing permissions and * limitations under the License. */ -@OptIn(ExperimentalLayoutApi::class) @Composable @Preview fun Layout_Graph_Vertical() { @@ -80,7 +78,6 @@ fun Layout_Graph_Vertical() { // [END android_compose_layout_vertical_graph] } -@OptIn(ExperimentalLayoutApi::class) @Composable @Preview fun Layout_Graph_Horizontal() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/InsetsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/InsetsSnippets.kt index 2bbf276b8..4599fd392 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/InsetsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/InsetsSnippets.kt @@ -25,7 +25,6 @@ import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.background import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.ExperimentalLayoutApi import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.WindowInsets @@ -115,7 +114,6 @@ fun ConsumedFromSiblingsSnippet() { @Composable fun ConsumedFromPaddingSnippet() { // [START android_compose_insets_consumed_from_padding] - @OptIn(ExperimentalLayoutApi::class) Column(Modifier.padding(16.dp).consumeWindowInsets(PaddingValues(16.dp))) { // content Spacer(Modifier.windowInsetsBottomHeight(WindowInsets.ime)) @@ -123,7 +121,6 @@ fun ConsumedFromPaddingSnippet() { // [END android_compose_insets_consumed_from_padding] } -@OptIn(ExperimentalLayoutApi::class) @Preview @Composable fun M3SupportScaffoldSnippet() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/MaterialLayoutSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/MaterialLayoutSnippets.kt index 9c7f9d4d3..b027c6eae 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/MaterialLayoutSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/MaterialLayoutSnippets.kt @@ -28,12 +28,12 @@ import androidx.compose.material.icons.filled.Image import androidx.compose.material3.BottomAppBar import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.Divider import androidx.compose.material3.DrawerValue import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.ExtendedFloatingActionButton import androidx.compose.material3.FabPosition import androidx.compose.material3.FloatingActionButton +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ModalBottomSheet @@ -291,7 +291,7 @@ fun DrawerDemo() { drawerContent = { ModalDrawerSheet { Text("Drawer title", modifier = Modifier.padding(16.dp)) - Divider() + HorizontalDivider() NavigationDrawerItem( label = { Text(text = "Drawer Item") }, selected = false, diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt index e2bf4c434..ec8e84cbf 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/PagerSnippets.kt @@ -14,15 +14,11 @@ * limitations under the License. */ -@file:OptIn( - ExperimentalFoundationApi::class -) @file:Suppress("unused") package com.example.compose.snippets.layouts import android.util.Log -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement @@ -123,7 +119,6 @@ fun VerticalPagerSample() { // [END android_compose_layouts_pager_vertical_basic] } -@OptIn(ExperimentalFoundationApi::class) @Preview @Composable fun PagerScrollToItem() { @@ -214,7 +209,6 @@ fun PageChangesSample() { // [END android_compose_layouts_pager_notify_page_changes] } -@OptIn(ExperimentalFoundationApi::class) @Composable @Preview fun PagerWithTabsExample() { @@ -358,7 +352,6 @@ fun PagerWithTabs() { } // [END android_compose_layouts_pager_with_tabs] } -@OptIn(ExperimentalFoundationApi::class) @Preview @Composable fun PagerIndicator() { @@ -410,7 +403,6 @@ private val threePagesPerViewport = object : PageSize { } // [END android_compose_pager_custom_page_size] -@OptIn(ExperimentalFoundationApi::class) @Preview @Composable private fun CustomSnapDistance() { diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt index b5a7d0374..c8864f129 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/lists/LazyListSnippets.kt @@ -19,7 +19,6 @@ package com.example.compose.snippets.lists import androidx.compose.animation.AnimatedVisibility -import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.core.Spring import androidx.compose.animation.core.spring import androidx.compose.animation.core.tween @@ -265,7 +264,6 @@ private object ListsSnippetsReactingScrollPosition1 { private object ListsSnippetsReactingScrollPosition2 { // [START android_compose_layouts_lazy_column_scroll_to_top] - @OptIn(ExperimentalAnimationApi::class) @Composable fun MessageList(messages: List) { Box { @@ -427,7 +425,6 @@ private fun LazyColumnRememberSaveable() { // [END android_compose_layouts_lazy_column_any_key_saveable] } -@OptIn(ExperimentalFoundationApi::class) @Composable private fun LazyItemAnimations() { val books = remember { @@ -445,7 +442,6 @@ private fun LazyItemAnimations() { // [END android_compose_layouts_lazy_column_item_animation] } -@OptIn(ExperimentalFoundationApi::class) @Composable private fun LazyItemAnimationWithSpec() { val books = remember { @@ -635,7 +631,6 @@ private fun ContentTypeExample() { } @Preview -@OptIn(ExperimentalFoundationApi::class) @Composable fun LazyStaggeredGridSnippet() { // [START android_compose_layouts_lazy_staggered_grid_adaptive] @@ -658,7 +653,6 @@ fun LazyStaggeredGridSnippet() { // [END android_compose_layouts_lazy_staggered_grid_adaptive] } @Preview -@OptIn(ExperimentalFoundationApi::class) @Composable fun LazyStaggeredGridSnippetFixed() { // [START android_compose_layouts_lazy_staggered_grid_fixed] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/resources/ResourcesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/resources/ResourcesSnippets.kt index b6b225a0c..09c0bef13 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/resources/ResourcesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/resources/ResourcesSnippets.kt @@ -34,7 +34,6 @@ import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.res.colorResource import androidx.compose.ui.res.dimensionResource @@ -47,7 +46,6 @@ import androidx.compose.ui.text.font.FontFamily import androidx.compose.ui.text.font.FontWeight import com.example.compose.snippets.R -@OptIn(ExperimentalComposeUiApi::class) @Composable fun Strings() { // [START android_compose_resources_strings] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt index c68791a0f..976d7ac73 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/sideeffects/SideEffectsSnippets.kt @@ -43,10 +43,10 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.rememberUpdatedState import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalLifecycleOwner import androidx.lifecycle.Lifecycle import androidx.lifecycle.LifecycleEventObserver import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.compose.LocalLifecycleOwner import com.example.compose.snippets.interop.FirebaseAnalytics import com.example.compose.snippets.interop.User import com.example.compose.snippets.kotlin.Message diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/state/StateOverviewSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/state/StateOverviewSnippets.kt index 503732ade..5ac1e71b4 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/state/StateOverviewSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/state/StateOverviewSnippets.kt @@ -16,6 +16,8 @@ @file:Suppress("unused") +package com.example.compose.snippets.state + import android.content.res.Resources import android.graphics.BitmapShader import android.graphics.Shader @@ -244,7 +246,7 @@ private fun RememberKeysSnippet3() { } /** - * Add fake Parcelize and Parcelable to avoid adding dependency on + * Add fake com.example.compose.snippets.state.Parcelize and com.example.compose.snippets.state.Parcelable to avoid adding dependency on * kotlin-parcelize just for snippets */ private annotation class Parcelize diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/focus/FocusSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/focus/FocusSnippets.kt index 2391d48b3..82b5b2d1e 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/focus/FocusSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/focus/FocusSnippets.kt @@ -18,7 +18,6 @@ package com.example.compose.snippets.touchinput.focus -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Indication import androidx.compose.foundation.IndicationInstance import androidx.compose.foundation.background @@ -113,7 +112,6 @@ private fun BasicSample2() { } } -@OptIn(ExperimentalComposeUiApi::class) @Preview @Composable fun OverrideDefaultOrder() { @@ -177,7 +175,6 @@ fun OverrideDefaultOrder() { // [END android_compose_touchinput_focus_override_use] } -@OptIn(ExperimentalComposeUiApi::class) @Preview @Composable fun OverrideTwoDimensionalOrder() { @@ -197,7 +194,6 @@ fun OverrideTwoDimensionalOrder() { // [END android_compose_touchinput_focus_override_2d] } -@OptIn(ExperimentalFoundationApi::class) @Composable private fun FocusGroup() { @@ -319,7 +315,6 @@ private fun Capture() { // [END android_compose_touchinput_focus_capture] } -@OptIn(ExperimentalComposeUiApi::class) @Composable private fun ModifierOrder() { @@ -403,7 +398,6 @@ private fun RedirectFocus() { // [END android_compose_touchinput_focus_redirect] } -@OptIn(ExperimentalComposeUiApi::class) @Composable private fun FocusAdvancing() { // [START android_compose_touchinput_focus_advancing] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/gestures/GesturesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/gestures/GesturesSnippets.kt index dcddc073c..d5f7fffed 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/gestures/GesturesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/gestures/GesturesSnippets.kt @@ -56,7 +56,6 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Brush @@ -208,7 +207,6 @@ private fun AutomaticNestedScroll() { private object NestedScrollInterop { // [START android_compose_touchinput_gestures_nested_scroll_interop_activity] open class MainActivity : ComponentActivity() { - @OptIn(ExperimentalComposeUiApi::class) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/pointerinput/TapAndPress.kt b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/pointerinput/TapAndPress.kt index fbfa95cd8..dbe22282b 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/pointerinput/TapAndPress.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/touchinput/pointerinput/TapAndPress.kt @@ -60,7 +60,6 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.Alignment -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.geometry.Offset @@ -291,7 +290,6 @@ private fun FullScreenImage( } // [START android_compose_touchinput_pointerinput_scrim] -@OptIn(ExperimentalComposeUiApi::class) @Composable private fun Scrim(onClose: () -> Unit, modifier: Modifier = Modifier) { val strClose = stringResource(R.string.close) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 530c1296e..70130dd47 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,46 +1,45 @@ [versions] -accompanist = "0.32.0" -androidGradlePlugin = "8.4.0" -androidx-activity-compose = "1.9.0" -androidx-appcompat = "1.6.1" -androidx-compose-bom = "2024.05.00" +accompanist = "0.34.0" +androidGradlePlugin = "8.4.2" +androidx-activity-compose = "1.9.1" +androidx-appcompat = "1.7.0" +androidx-compose-bom = "2024.06.00" androidx-compose-ui-test = "1.7.0-alpha08" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" -androidx-corektx = "1.9.0" +androidx-corektx = "1.13.1" androidx-emoji2-views = "1.4.0" -androidx-fragment-ktx = "1.6.2" -androidx-glance-appwidget = "1.0.0" -androidx-lifecycle-compose = "2.8.0-rc01" -androidx-lifecycle-runtime-compose = "2.8.0-rc01" +androidx-fragment-ktx = "1.8.2" +androidx-glance-appwidget = "1.1.0" +androidx-lifecycle-compose = "2.8.4" +androidx-lifecycle-runtime-compose = "2.8.4" androidx-navigation = "2.8.0-rc01" androidx-paging = "3.2.1" androidx-test = "1.5.0" androidx-test-espresso = "3.5.1" -androidx-window = "1.3.0-beta02" +androidx-window = "1.3.0" androidxHiltNavigationCompose = "1.2.0" -coil = "2.5.0" +coil = "2.6.0" # @keep compileSdk = "34" -compose-compiler = "1.5.4" coreSplashscreen = "1.0.1" -compose-latest = "1.7.0-beta05" +compose-latest = "1.7.0-beta06" coroutines = "1.7.3" google-maps = "18.2.0" gradle-versions = "0.51.0" hilt = "2.50" horologist = "0.5.24" junit = "4.13.2" -# @pin Update in conjuction with Compose Compiler -kotlin = "1.9.20" +kotlin = "2.0.0" kotlinxSerializationJson = "1.6.3" + ksp = "1.8.0-1.0.9" maps-compose = "4.3.2" material = "1.4.0-beta01" -material3-adaptive = "1.0.0-alpha12" +material3-adaptive = "1.0.0-beta04" material3-adaptive-navigation-suite = "1.0.0-alpha07" -media3 = "1.2.1" +media3 = "1.3.1" # @keep minSdk = "21" playServicesWearable = "18.2.0" @@ -48,8 +47,8 @@ recyclerview = "1.3.2" # @keep targetSdk = "34" version-catalog-update = "0.8.3" -wearComposeFoundation = "1.3.0" -wearComposeMaterial = "1.3.0" +wearComposeFoundation = "1.3.1" +wearComposeMaterial = "1.3.1" composeUiTooling = "1.3.1" [libraries] @@ -76,7 +75,7 @@ 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-googlefonts = { module = "androidx.compose.ui:ui-text-google-fonts" } -androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.0-beta01" +androidx-graphics-shapes = "androidx.graphics:graphics-shapes:1.0.0-rc01" androidx-compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" } androidx-compose-ui-test = { module = "androidx.compose.ui:ui-test" } androidx-compose-ui-test-junit4 = { module = "androidx.compose.ui:ui-test-junit4" } @@ -131,6 +130,7 @@ androidx-material-icons-core = { module = "androidx.compose.material:material-ic [plugins] android-application = { id = "com.android.application", version.ref = "androidGradlePlugin" } android-library = { id = "com.android.library", version.ref = "androidGradlePlugin" } +compose-compiler = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" } gradle-versions = { id = "com.github.ben-manes.versions", version.ref = "gradle-versions" } hilt = { id = "com.google.dagger.hilt.android", version.ref = "hilt" } kapt = { id = "org.jetbrains.kotlin.kapt", version.ref = "kotlin" } diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatchersOutsideTests.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatchersOutsideTests.kt index 9f8c6c758..2f3228ccf 100644 --- a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatchersOutsideTests.kt +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/DispatchersOutsideTests.kt @@ -14,26 +14,30 @@ * limitations under the License. */ -package com.example.android.coroutines.testing.repo +@file:OptIn(ExperimentalCoroutinesApi::class) + +package com.example.android.coroutines.testing -import com.example.android.coroutines.testing.MainDispatcherRule import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest import org.junit.Rule import org.junit.Test +import org.junit.experimental.runners.Enclosed +import org.junit.runner.RunWith // Helper function to let code below compile -private fun Repository(): Repository = Repository(Dispatchers.IO) +private fun ExampleRepository(): Repository = Repository(Dispatchers.IO) + -private // [START coroutine_test_repo_with_rule_blank] -class Repository(private val ioDispatcher: CoroutineDispatcher) { /* ... */ } +class ExampleRepository(private val ioDispatcher: CoroutineDispatcher) { /* ... */ } class RepositoryTestWithRule { - private val repository = Repository(/* What TestDispatcher? */) + private val repository = ExampleRepository(/* What TestDispatcher? */) @get:Rule val mainDispatcherRule = MainDispatcherRule() @@ -48,13 +52,14 @@ class RepositoryTestWithRule { } // [END coroutine_test_repo_with_rule_blank] +@RunWith(Enclosed::class) class DispatchersOutsideTests { // [START coroutine_test_repo_with_rule] class RepositoryTestWithRule { @get:Rule val mainDispatcherRule = MainDispatcherRule() - private val repository = Repository(mainDispatcherRule.testDispatcher) + private val repository = ExampleRepository(mainDispatcherRule.testDispatcher) @Test fun someRepositoryTest() = runTest { // Takes scheduler from Main @@ -70,7 +75,7 @@ class DispatchersOutsideTests { class RepositoryTest { // Creates the single test scheduler private val testDispatcher = UnconfinedTestDispatcher() - private val repository = Repository(testDispatcher) + private val repository = ExampleRepository(testDispatcher) @Test fun someRepositoryTest() = runTest(testDispatcher.scheduler) { @@ -84,3 +89,5 @@ class DispatchersOutsideTests { } // [END coroutine_test_repo_without_rule] } + + diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt index 882488f8f..54a5a9bdd 100644 --- a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/HomeViewModelTestUsingRule.kt @@ -22,7 +22,6 @@ import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.resetMain import kotlinx.coroutines.test.runTest import kotlinx.coroutines.test.setMain -import org.junit.Assert import org.junit.Assert.assertEquals import org.junit.Rule import org.junit.Test diff --git a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/UserStateTest.kt b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/UserStateTest.kt index 9620ccbe0..e2c625e4e 100644 --- a/kotlin/src/test/kotlin/com/example/android/coroutines/testing/UserStateTest.kt +++ b/kotlin/src/test/kotlin/com/example/android/coroutines/testing/UserStateTest.kt @@ -5,10 +5,9 @@ package com.example.android.coroutines.testing import com.example.android.coroutines.testing.scope.FakeUserRepository import com.example.android.coroutines.testing.scope.UserState import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.advanceUntilIdle import kotlinx.coroutines.test.runTest -import org.junit.Assert.* +import org.junit.Assert.assertEquals import org.junit.Test // [START android_coroutine_test_user_state_test] diff --git a/shared/src/main/res/layout/activity_main.xml b/shared/src/main/res/layout/activity_main.xml deleted file mode 100644 index 0a8e972d7..000000000 --- a/shared/src/main/res/layout/activity_main.xml +++ /dev/null @@ -1,31 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/wear/build.gradle.kts b/wear/build.gradle.kts index b8ca7edda..9725e5396 100644 --- a/wear/build.gradle.kts +++ b/wear/build.gradle.kts @@ -1,6 +1,7 @@ plugins { alias(libs.plugins.android.application) alias(libs.plugins.kotlin.android) + alias(libs.plugins.compose.compiler) } android { @@ -39,9 +40,7 @@ android { buildFeatures { compose = true } - composeOptions { - kotlinCompilerExtensionVersion = libs.versions.compose.compiler.get() - } + packaging { resources { excludes += "/META-INF/{AL2.0,LGPL2.1}" From 43c9fe878d03bb443fc87e4945cd46170597dcf7 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Wed, 28 Aug 2024 21:09:12 +0100 Subject: [PATCH 34/59] Migrate CompositionLocal snippets to m3 (#321) (#323) Co-authored-by: Ben Trengrove From 2b78281868fc2f5746c12ea99cad1c87345f55b9 Mon Sep 17 00:00:00 2001 From: Alex Vanyo Date: Thu, 29 Aug 2024 15:27:25 -0700 Subject: [PATCH 35/59] Update snippets to use material3-adaptive rc01 (#324) --- gradle/libs.versions.toml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 70130dd47..6e2d5eab1 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -37,8 +37,8 @@ kotlinxSerializationJson = "1.6.3" ksp = "1.8.0-1.0.9" maps-compose = "4.3.2" material = "1.4.0-beta01" -material3-adaptive = "1.0.0-beta04" -material3-adaptive-navigation-suite = "1.0.0-alpha07" +material3-adaptive = "1.0.0-rc01" +material3-adaptive-navigation-suite = "1.3.0-rc01" media3 = "1.3.1" # @keep minSdk = "21" From cf8e3c91f94aa6503c849b1821c64fad7c7aca85 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Fri, 30 Aug 2024 09:27:01 +0100 Subject: [PATCH 36/59] Migrate many snippets to use Material 3 instead of Material 2. (#320) * Do latest 1.7.0-beta06 version updates * Apply Spotless * Code cleanup * Apply Spotless * Fix broken test * Remove M2 usage from many snippets. * Apply Spotless * Remove M2 usage from many snippets. * Remove M2 usage from many snippets. * Revert incorrect commit --------- Co-authored-by: riggaroo --- .../snippets/animations/AnimationSnippets.kt | 112 ++++++++++++------ .../designsystems/CustomDesignSystem.kt | 12 +- .../snippets/graphics/ShapesSnippets.kt | 38 +++--- .../interop/ComposeWithOtherLibraries.kt | 4 +- .../compose/snippets/kotlin/KotlinSnippets.kt | 4 +- .../layouts/AlignmentLinesSnippets.kt | 4 +- .../layouts/ConstraintLayoutSnippets.kt | 4 +- .../snippets/layouts/CustomLayoutSnippets.kt | 2 +- .../snippets/layouts/FlowLayoutSnippets.kt | 14 ++- .../snippets/layouts/IntrinsicSnippets.kt | 12 +- .../mentalmodel/ThinkingInComposeSnippets.kt | 10 +- .../snippets/resources/ResourcesSnippets.kt | 6 +- .../snippets/state/SavingUIStateSnippets.kt | 4 +- .../compose/snippets/text/EmojiSnippets.kt | 2 +- .../text/TextDownloadableFontsSnippets.kt | 10 +- gradle/libs.versions.toml | 2 +- 16 files changed, 146 insertions(+), 94 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt index 08c699818..9db1748d1 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/animations/AnimationSnippets.kt @@ -23,7 +23,6 @@ import androidx.compose.animation.AnimatedContent import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.Crossfade import androidx.compose.animation.EnterExitState -import androidx.compose.animation.ExperimentalAnimationApi import androidx.compose.animation.SizeTransform import androidx.compose.animation.animateColor import androidx.compose.animation.animateContentSize @@ -81,18 +80,19 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.sizeIn import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material.Button -import androidx.compose.material.ExperimentalMaterialApi -import androidx.compose.material.Icon -import androidx.compose.material.Surface -import androidx.compose.material.Text import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Phone +import androidx.compose.material3.Button +import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.State import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf +import androidx.compose.runtime.mutableLongStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue @@ -156,7 +156,12 @@ private fun AnimatedVisibilityWithEnterAndExit() { ), exit = slideOutVertically() + shrinkVertically() + fadeOut() ) { - Text("Hello", Modifier.fillMaxWidth().height(200.dp)) + Text( + "Hello", + Modifier + .fillMaxWidth() + .height(200.dp) + ) } // [END android_compose_animations_animated_visibility_enter_exit] } @@ -203,7 +208,11 @@ private fun AnimatedVisibilityAnimateEnterExitChildren() { exit = fadeOut() ) { // Fade in/out the background and the foreground. - Box(Modifier.fillMaxSize().background(Color.DarkGray)) { + Box( + Modifier + .fillMaxSize() + .background(Color.DarkGray) + ) { Box( Modifier .align(Alignment.Center) @@ -238,7 +247,11 @@ private fun AnimatedVisibilityTransition() { val background by transition.animateColor(label = "color") { state -> if (state == EnterExitState.Visible) Color.Blue else Color.Gray } - Box(modifier = Modifier.size(128.dp).background(background)) + Box( + modifier = Modifier + .size(128.dp) + .background(background) + ) } // [END android_compose_animations_animated_visibility_transition] } @@ -249,9 +262,10 @@ private fun AnimateAsStateSimple() { // [START android_compose_animations_animate_as_state] var enabled by remember { mutableStateOf(true) } - val alpha: Float by animateFloatAsState(if (enabled) 1f else 0.5f) + val alpha: Float by animateFloatAsState(if (enabled) 1f else 0.5f, label = "alpha") Box( - Modifier.fillMaxSize() + Modifier + .fillMaxSize() .graphicsLayer(alpha = alpha) .background(Color.Red) ) @@ -263,11 +277,14 @@ private fun AnimateAsStateSimple() { private fun AnimatedContentSimple() { // [START android_compose_animations_animated_content_simple] Row { - var count by remember { mutableStateOf(0) } + var count by remember { mutableIntStateOf(0) } Button(onClick = { count++ }) { Text("Add") } - AnimatedContent(targetState = count) { targetCount -> + AnimatedContent( + targetState = count, + label = "animated content" + ) { targetCount -> // Make sure to use `targetCount`, not `count`. Text(text = "Count: $targetCount") } @@ -297,13 +314,13 @@ private fun AnimatedContentTransitionSpec(count: Int) { // be displayed out of bounds. SizeTransform(clip = false) ) - } + }, label = "animated content" ) { targetCount -> Text(text = "$targetCount") } // [END android_compose_animations_animated_content_transition_spec] } -@OptIn(ExperimentalAnimationApi::class, ExperimentalMaterialApi::class) + @Composable private fun AnimatedContentSizeTransform() { // [START android_compose_animations_animated_content_size_transform] @@ -332,7 +349,7 @@ private fun AnimatedContentSizeTransform() { } } } - } + }, label = "size transform" ) { targetExpanded -> if (targetExpanded) { Expanded() @@ -349,7 +366,9 @@ private fun AnimateContentSizeSimple() { // [START android_compose_animations_animated_content_size_modifier_simple] var message by remember { mutableStateOf("Hello") } Box( - modifier = Modifier.background(Color.Blue).animateContentSize() + modifier = Modifier + .background(Color.Blue) + .animateContentSize() ) { Text(text = message) } // [END android_compose_animations_animated_content_size_modifier_simple] } @@ -358,7 +377,7 @@ private fun AnimateContentSizeSimple() { private fun CrossfadeSimple() { // [START android_compose_animations_crossfade_simple] var currentPage by remember { mutableStateOf("A") } - Crossfade(targetState = currentPage) { screen -> + Crossfade(targetState = currentPage, label = "cross fade") { screen -> when (screen) { "A" -> Text("Page A") "B" -> Text("Page B") @@ -409,6 +428,7 @@ private object UpdateTransitionEnumState { when { BoxState.Expanded isTransitioningTo BoxState.Collapsed -> spring(stiffness = 50f) + else -> tween(durationMillis = 500) } @@ -476,7 +496,6 @@ private object UpdateTransitionCreateChildTransition { // [END android_compose_animations_transitions_dialer_example] } -@OptIn(ExperimentalAnimationApi::class, ExperimentalMaterialApi::class) @Composable private fun UpdateTransitionAnimatedVisibility() { // [START android_compose_animations_transitions_animated_visibility] @@ -493,9 +512,13 @@ private fun UpdateTransitionAnimatedVisibility() { onClick = { selected = !selected }, shape = RoundedCornerShape(8.dp), border = BorderStroke(2.dp, borderColor), - elevation = elevation + shadowElevation = elevation ) { - Column(modifier = Modifier.fillMaxWidth().padding(16.dp)) { + Column( + modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + ) { Text(text = "Hello, world!") // AnimatedVisibility as a part of the transition. transition.AnimatedVisibility( @@ -566,17 +589,22 @@ private object UpdateTransitionEncapsulating { @Composable private fun RememberInfiniteTransitionSimple() { // [START android_compose_animations_infinite_transition_simple] - val infiniteTransition = rememberInfiniteTransition() + val infiniteTransition = rememberInfiniteTransition(label = "infinite") val color by infiniteTransition.animateColor( initialValue = Color.Red, targetValue = Color.Green, animationSpec = infiniteRepeatable( animation = tween(1000, easing = LinearEasing), repeatMode = RepeatMode.Reverse - ) + ), + label = "color" ) - Box(Modifier.fillMaxSize().background(color)) + Box( + Modifier + .fillMaxSize() + .background(color) + ) // [END android_compose_animations_infinite_transition_simple] } @@ -588,9 +616,14 @@ private fun AnimatableSimple(ok: Boolean) { LaunchedEffect(ok) { color.animateTo(if (ok) Color.Green else Color.Red) } - Box(Modifier.fillMaxSize().background(color.value)) + Box( + Modifier + .fillMaxSize() + .background(color.value) + ) // [END android_compose_animations_animatable_simple] } + @Composable private fun TargetBasedAnimationSimple(someCustomCondition: () -> Boolean) { // [START android_compose_animations_target_based_animation_simple] @@ -602,7 +635,7 @@ private fun TargetBasedAnimationSimple(someCustomCondition: () -> Boolean) { targetValue = 1000f ) } - var playTime by remember { mutableStateOf(0L) } + var playTime by remember { mutableLongStateOf(0L) } LaunchedEffect(anim) { val startTime = withFrameNanos { it } @@ -621,7 +654,8 @@ private fun AnimationSpecTween(enabled: Boolean) { val alpha: Float by animateFloatAsState( targetValue = if (enabled) 1f else 0.5f, // Configure the animation duration and easing. - animationSpec = tween(durationMillis = 300, easing = FastOutSlowInEasing) + animationSpec = tween(durationMillis = 300, easing = FastOutSlowInEasing), + label = "alpha" ) // [END android_compose_animations_spec_tween] } @@ -634,7 +668,8 @@ private fun AnimationSpecSpring() { animationSpec = spring( dampingRatio = Spring.DampingRatioHighBouncy, stiffness = Spring.StiffnessMedium - ) + ), + label = "spring spec" ) // [END android_compose_animations_spec_spring] } @@ -648,7 +683,8 @@ private fun AnimationSpecTween() { durationMillis = 300, delayMillis = 50, easing = LinearOutSlowInEasing - ) + ), + label = "tween delay" ) // [END android_compose_animations_spec_tween_delay] } @@ -664,7 +700,8 @@ private fun AnimationSpecKeyframe() { 0.2f at 15 using FastOutLinearInEasing // for 15-75 ms 0.4f at 75 // ms 0.4f at 225 // ms - } + }, + label = "keyframe" ) // [END android_compose_animations_spec_keyframe] } @@ -678,7 +715,8 @@ private fun AnimationSpecRepeatable() { iterations = 3, animation = tween(durationMillis = 300), repeatMode = RepeatMode.Reverse - ) + ), + label = "repeatable spec" ) // [END android_compose_animations_spec_repeatable] } @@ -691,7 +729,8 @@ private fun AnimationSpecInfiniteRepeatable() { animationSpec = infiniteRepeatable( animation = tween(durationMillis = 300), repeatMode = RepeatMode.Reverse - ) + ), + label = "infinite repeatable" ) // [END android_compose_animations_spec_infinite_repeatable] } @@ -701,7 +740,8 @@ private fun AnimationSpecSnap() { // [START android_compose_animations_spec_snap] val value by animateFloatAsState( targetValue = 1f, - animationSpec = snap(delayMillis = 50) + animationSpec = snap(delayMillis = 50), + label = "snap spec" ) // [END android_compose_animations_spec_snap] } @@ -717,7 +757,8 @@ private object Easing { animationSpec = tween( durationMillis = 300, easing = CustomEasing - ) + ), + label = "custom easing" ) // …… } @@ -747,7 +788,8 @@ private object AnimationVectorCustomType { convertFromVector = { vector: AnimationVector2D -> MySize(vector.v1.dp, vector.v2.dp) } - ) + ), + label = "size" ) } // [END android_compose_animations_vector_convertor_custom_type] diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt index f2ed138e3..a8f8c5795 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/designsystems/CustomDesignSystem.kt @@ -16,13 +16,13 @@ package com.example.compose.snippets.designsystems +import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.shape.ZeroCornerSize -import androidx.compose.material.Colors -import androidx.compose.material.ContentAlpha import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults +import androidx.compose.material3.ColorScheme import androidx.compose.material3.MaterialTheme import androidx.compose.material3.ProvideTextStyle import androidx.compose.material3.Shapes @@ -57,8 +57,10 @@ import androidx.compose.ui.unit.sp private object CustomDesignSystemExtend { // [START android_compose_designsystems_custom_extend] // Use with MaterialTheme.colors.snackbarAction - val Colors.snackbarAction: Color - get() = if (isLight) Red300 else Red700 + + val ColorScheme.snackbarAction: Color + @Composable + get() = if (isSystemInDarkTheme()) Red300 else Red700 // Use with MaterialTheme.typography.textFieldInput val Typography.textFieldInput: TextStyle @@ -339,7 +341,7 @@ object FullyCustomDesignSystem { .copy(alpha = 0.12f) .compositeOver(CustomTheme.colors.component), disabledContentColor = CustomTheme.colors.content - .copy(alpha = ContentAlpha.disabled) + .copy(alpha = 0.5f) ), shape = ButtonShape, elevation = ButtonDefaults.elevatedButtonElevation( diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt index efe9bfa1d..a106a9055 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt @@ -40,6 +40,7 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -347,7 +348,7 @@ private fun MorphOnClick() { // [START android_compose_shapes_polygon_compose_shape] class RoundedPolygonShape( - private val polygon: RoundedPolygon + private val polygon: State ) : Shape { private val matrix = Matrix() override fun createOutline( @@ -355,7 +356,7 @@ class RoundedPolygonShape( layoutDirection: LayoutDirection, density: Density ): Outline { - val path = polygon.cubics.toPath() + val path = polygon.value.cubics.toPath() // below assumes that you haven't changed the default radius of 1f, nor the centerX and centerY of 0f // By default this stretches the path to the size of the container, if you don't want stretching, use the same size.width for both x and y. matrix.scale(size.width / 2f, size.height / 2f) @@ -372,12 +373,14 @@ class RoundedPolygonShape( fun ApplyPolygonAsClipBasic() { // [START android_compose_shapes_apply_as_clip] val hexagon = remember { - RoundedPolygon( - 6, - rounding = CornerRounding(0.2f) + mutableStateOf( + RoundedPolygon( + 6, + rounding = CornerRounding(0.2f) + ) ) } - val clip = remember(hexagon) { + val clip = remember { RoundedPolygonShape(polygon = hexagon) } Box( @@ -400,9 +403,11 @@ fun ApplyPolygonAsClipBasic() { fun ApplyPolygonAsClipImage() { // [START android_compose_shapes_apply_as_clip_advanced] val hexagon = remember { - RoundedPolygon( - 6, - rounding = CornerRounding(0.2f) + mutableStateOf( + RoundedPolygon( + 6, + rounding = CornerRounding(0.2f) + ) ) } val clip = remember(hexagon) { @@ -494,6 +499,13 @@ private fun RotatingScallopedProfilePic() { ), label = "animatedMorphProgress" ) + val morphingShape = remember { + CustomRotatingMorphShape( + morph, + animatedProgress, + animatedRotation + ) + } Box( modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center @@ -503,13 +515,7 @@ private fun RotatingScallopedProfilePic() { contentDescription = "Dog", contentScale = ContentScale.Crop, modifier = Modifier - .clip( - CustomRotatingMorphShape( - morph, - animatedProgress, - animatedRotation - ) - ) + .clip(morphingShape) .size(200.dp) ) } diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt b/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt index 3fc79a661..fe5320680 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/interop/ComposeWithOtherLibraries.kt @@ -26,8 +26,8 @@ import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.lazy.LazyColumn -import androidx.compose.material.Button -import androidx.compose.material.Text +import androidx.compose.material3.Button +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.State import androidx.compose.runtime.getValue diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/kotlin/KotlinSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/kotlin/KotlinSnippets.kt index 345ca6648..12c5618b4 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/kotlin/KotlinSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/kotlin/KotlinSnippets.kt @@ -34,8 +34,8 @@ import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.CircleShape -import androidx.compose.material.Button -import androidx.compose.material.Text +import androidx.compose.material3.Button +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AlignmentLinesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AlignmentLinesSnippets.kt index e312de9b9..8946384b1 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AlignmentLinesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/AlignmentLinesSnippets.kt @@ -35,8 +35,8 @@ package com.example.compose.snippets.layouts import androidx.compose.foundation.layout.BoxWithConstraints import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Text +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.remember import androidx.compose.ui.Modifier diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/ConstraintLayoutSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/ConstraintLayoutSnippets.kt index fe2106a93..d9763de19 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/ConstraintLayoutSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/ConstraintLayoutSnippets.kt @@ -19,8 +19,8 @@ package com.example.compose.snippets.layouts import androidx.compose.foundation.layout.BoxWithConstraints -import androidx.compose.material.Button -import androidx.compose.material.Text +import androidx.compose.material3.Button +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.unit.Dp diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CustomLayoutSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CustomLayoutSnippets.kt index 72c6cb0af..a92c0c2d8 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CustomLayoutSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/CustomLayoutSnippets.kt @@ -34,7 +34,7 @@ package com.example.compose.snippets.layouts * limitations under the License. */ import androidx.compose.foundation.layout.padding -import androidx.compose.material.Text +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.layout.AlignmentLine diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt index 203f12838..164dd3ea4 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/FlowLayoutSnippets.kt @@ -40,8 +40,8 @@ import androidx.compose.foundation.layout.wrapContentHeight import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.verticalScroll -import androidx.compose.material.Chip import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material3.FilterChip import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -278,14 +278,16 @@ private fun FlowItems() { @OptIn(ExperimentalMaterialApi::class) @Composable fun ChipItem(text: String, onClick: () -> Unit = {}) { - Chip( + FilterChip( modifier = Modifier.padding(end = 4.dp), onClick = onClick, leadingIcon = {}, - border = BorderStroke(1.dp, Color(0xFF3B3A3C)) - ) { - Text(text) - } + border = BorderStroke(1.dp, Color(0xFF3B3A3C)), + label = { + Text(text) + }, + selected = false + ) } @Composable diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/IntrinsicSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/IntrinsicSnippets.kt index 012f09e59..9bc39b292 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/layouts/IntrinsicSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/layouts/IntrinsicSnippets.kt @@ -39,10 +39,10 @@ import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width import androidx.compose.foundation.layout.wrapContentWidth -import androidx.compose.material.Divider -import androidx.compose.material.MaterialTheme -import androidx.compose.material.Surface -import androidx.compose.material.Text +import androidx.compose.material3.HorizontalDivider +import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -71,7 +71,7 @@ private object IntrinsicsSnippet1 { .wrapContentWidth(Alignment.Start), text = text1 ) - Divider( + HorizontalDivider( color = Color.Black, modifier = Modifier.fillMaxHeight().width(1.dp) ) @@ -111,7 +111,7 @@ private object IntrinsicsSnippet2 { .wrapContentWidth(Alignment.Start), text = text1 ) - Divider( + HorizontalDivider( color = Color.Black, modifier = Modifier.fillMaxHeight().width(1.dp) ) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/mentalmodel/ThinkingInComposeSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/mentalmodel/ThinkingInComposeSnippets.kt index 3cc21a966..eb4e4daca 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/mentalmodel/ThinkingInComposeSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/mentalmodel/ThinkingInComposeSnippets.kt @@ -24,11 +24,11 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Row import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.material.Button -import androidx.compose.material.Checkbox -import androidx.compose.material.Divider -import androidx.compose.material.Text +import androidx.compose.material3.Button +import androidx.compose.material3.Checkbox +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -137,7 +137,7 @@ fun NamePicker( Column { // this will recompose when [header] changes, but not when [names] changes Text(header, style = MaterialTheme.typography.bodyLarge) - Divider() + HorizontalDivider() // LazyColumn is the Compose version of a RecyclerView. // The lambda passed to items() is similar to a RecyclerView.ViewHolder. diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/resources/ResourcesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/resources/ResourcesSnippets.kt index 09c0bef13..0a2f34a56 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/resources/ResourcesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/resources/ResourcesSnippets.kt @@ -23,12 +23,12 @@ import androidx.compose.animation.graphics.res.animatedVectorResource import androidx.compose.animation.graphics.res.rememberAnimatedVectorPainter import androidx.compose.animation.graphics.vector.AnimatedImageVector import androidx.compose.foundation.layout.padding -import androidx.compose.material.Divider -import androidx.compose.material.Icon -import androidx.compose.material.Text import androidx.compose.material.icons.Icons import androidx.compose.material.icons.rounded.Menu +import androidx.compose.material3.Divider +import androidx.compose.material3.Icon import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text import androidx.compose.material3.Typography import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/state/SavingUIStateSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/state/SavingUIStateSnippets.kt index cfd35591f..cc35c128d 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/state/SavingUIStateSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/state/SavingUIStateSnippets.kt @@ -20,8 +20,8 @@ package com.example.compose.snippets.state import androidx.compose.foundation.lazy.LazyListState import androidx.compose.foundation.text.ClickableText -import androidx.compose.material.Text -import androidx.compose.material.TextField +import androidx.compose.material3.Text +import androidx.compose.material3.TextField import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/EmojiSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/EmojiSnippets.kt index eb0495caf..7a32ed36c 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/EmojiSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/EmojiSnippets.kt @@ -24,7 +24,7 @@ import androidx.activity.ComponentActivity import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.AppCompatTextView import androidx.compose.foundation.layout.Column -import androidx.compose.material.Text +import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.platform.ComposeView import androidx.compose.ui.text.EmojiSupportMatch diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextDownloadableFontsSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextDownloadableFontsSnippets.kt index 283e8f7f0..4eaffb648 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextDownloadableFontsSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextDownloadableFontsSnippets.kt @@ -20,9 +20,9 @@ package com.example.compose.snippets.text import android.util.Log import androidx.compose.foundation.layout.Column -import androidx.compose.material.Text -import androidx.compose.material.Typography import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Text +import androidx.compose.material3.Typography import androidx.compose.runtime.Composable import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.LaunchedEffect @@ -118,16 +118,16 @@ fun DownloadableFontsText() { private object TextDownloadableFontsSnippet4 { // [START android_compose_text_typography_definition] val MyTypography = Typography( - body1 = TextStyle( + bodyMedium = TextStyle( fontFamily = fontFamily, fontWeight = FontWeight.Normal, fontSize = 12.sp/*...*/ ), - body2 = TextStyle( + bodyLarge = TextStyle( fontFamily = fontFamily, fontWeight = FontWeight.Bold, letterSpacing = 2.sp, /*...*/ ), - h4 = TextStyle( + headlineMedium = TextStyle( fontFamily = fontFamily, fontWeight = FontWeight.SemiBold/*...*/ ), /*...*/ diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 6e2d5eab1..b4ef52918 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -15,7 +15,7 @@ androidx-glance-appwidget = "1.1.0" androidx-lifecycle-compose = "2.8.4" androidx-lifecycle-runtime-compose = "2.8.4" androidx-navigation = "2.8.0-rc01" -androidx-paging = "3.2.1" +androidx-paging = "3.3.1" androidx-test = "1.5.0" androidx-test-espresso = "3.5.1" androidx-window = "1.3.0" From bbdb61bc649b05f7c7f43ee1ecba131fd216ba96 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Mon, 2 Sep 2024 09:58:46 +0100 Subject: [PATCH 37/59] Revert shape changes for now. --- .../snippets/graphics/ShapesSnippets.kt | 95 ++++++++++--------- 1 file changed, 48 insertions(+), 47 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt index a106a9055..f254da288 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/graphics/ShapesSnippets.kt @@ -38,20 +38,20 @@ import androidx.compose.foundation.layout.size import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Text import androidx.compose.runtime.Composable -import androidx.compose.runtime.State import androidx.compose.runtime.getValue -import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.drawWithCache +import androidx.compose.ui.geometry.Rect import androidx.compose.ui.geometry.Size import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.Matrix import androidx.compose.ui.graphics.Outline import androidx.compose.ui.graphics.Path import androidx.compose.ui.graphics.Shape +import androidx.compose.ui.graphics.asComposePath import androidx.compose.ui.graphics.drawscope.scale import androidx.compose.ui.graphics.drawscope.translate import androidx.compose.ui.graphics.graphicsLayer @@ -68,9 +68,11 @@ import androidx.graphics.shapes.Cubic import androidx.graphics.shapes.Morph import androidx.graphics.shapes.RoundedPolygon import androidx.graphics.shapes.star +import androidx.graphics.shapes.toPath import com.example.compose.snippets.R import kotlin.math.PI import kotlin.math.cos +import kotlin.math.max import kotlin.math.sin @Preview @@ -86,8 +88,7 @@ fun BasicShapeCanvas() { centerX = size.width / 2, centerY = size.height / 2 ) - val roundedPolygonPath = roundedPolygon.cubics - .toPath() + val roundedPolygonPath = roundedPolygon.toPath().asComposePath() onDrawBehind { drawPath(roundedPolygonPath, color = Color.Blue) } @@ -114,8 +115,7 @@ private fun RoundedShapeExample() { smoothing = 1f ) ) - val roundedPolygonPath = roundedPolygon.cubics - .toPath() + val roundedPolygonPath = roundedPolygon.toPath().asComposePath() onDrawBehind { drawPath(roundedPolygonPath, color = Color.Black) } @@ -142,8 +142,7 @@ private fun RoundedShapeSmoothnessExample() { smoothing = 0.1f ) ) - val roundedPolygonPath = roundedPolygon.cubics - .toPath() + val roundedPolygonPath = roundedPolygon.toPath().asComposePath() onDrawBehind { drawPath(roundedPolygonPath, color = Color.Black) } @@ -180,7 +179,7 @@ private fun MorphExample() { val morph = Morph(start = triangle, end = square) val morphPath = morph - .toComposePath(progress = 0.5f) + .toPath(progress = 0.5f).asComposePath() onDrawBehind { drawPath(morphPath, color = Color.Black) @@ -227,7 +226,8 @@ private fun MorphExampleAnimation() { val morph = Morph(start = triangle, end = square) val morphPath = morph - .toComposePath(progress = morphProgress.value) + .toPath(progress = morphProgress.value) + .asComposePath() onDrawBehind { drawPath(morphPath, color = Color.Black) @@ -238,6 +238,7 @@ private fun MorphExampleAnimation() { // [END android_compose_graphics_polygon_morph_animation] } +// [START android_compose_morph_to_path] /** * Transforms the morph at a given progress into a [Path]. * It can optionally be scaled, using the origin (0,0) as pivot point. @@ -259,10 +260,11 @@ fun Morph.toComposePath(progress: Float, scale: Float = 1f, path: Path = Path()) path.close() return path } - +// [END android_compose_morph_to_path] /** * Function used to create a Path from a list of Cubics. */ +// [START android_compose_list_cubics_to_path] fun List.toPath(path: Path = Path(), scale: Float = 1f): Path { path.rewind() firstOrNull()?.let { first -> @@ -278,11 +280,12 @@ fun List.toPath(path: Path = Path(), scale: Float = 1f): Path { path.close() return path } +// [END android_compose_list_cubics_to_path] // [START android_compose_morph_clip_shape] class MorphPolygonShape( private val morph: Morph, - private val percentage: State + private val percentage: Float ) : Shape { private val matrix = Matrix() @@ -296,7 +299,7 @@ class MorphPolygonShape( matrix.scale(size.width / 2f, size.height / 2f) matrix.translate(1f, 1f) - val path = morph.toComposePath(progress = percentage.value) + val path = morph.toPath(progress = percentage).asComposePath() path.transform(matrix) return Outline.Generic(path) } @@ -335,7 +338,7 @@ private fun MorphOnClick() { modifier = Modifier .size(200.dp) .padding(8.dp) - .clip(MorphPolygonShape(morph, animatedProgress)) + .clip(MorphPolygonShape(morph, animatedProgress.value)) .background(Color(0xFF80DEEA)) .size(200.dp) .clickable(interactionSource = interactionSource, indication = null) { @@ -347,22 +350,26 @@ private fun MorphOnClick() { } // [START android_compose_shapes_polygon_compose_shape] +fun RoundedPolygon.getBounds() = calculateBounds().let { Rect(it[0], it[1], it[2], it[3]) } class RoundedPolygonShape( - private val polygon: State + private val polygon: RoundedPolygon, + private var matrix: Matrix = Matrix() ) : Shape { - private val matrix = Matrix() + private var path = Path() override fun createOutline( size: Size, layoutDirection: LayoutDirection, density: Density ): Outline { - val path = polygon.value.cubics.toPath() - // below assumes that you haven't changed the default radius of 1f, nor the centerX and centerY of 0f - // By default this stretches the path to the size of the container, if you don't want stretching, use the same size.width for both x and y. - matrix.scale(size.width / 2f, size.height / 2f) - matrix.translate(1f, 1f) - path.transform(matrix) + path.rewind() + path = polygon.toPath().asComposePath() + matrix.reset() + val bounds = polygon.getBounds() + val maxDimension = max(bounds.width, bounds.height) + matrix.scale(size.width / maxDimension, size.height / maxDimension) + matrix.translate(-bounds.left, -bounds.top) + path.transform(matrix) return Outline.Generic(path) } } @@ -373,14 +380,12 @@ class RoundedPolygonShape( fun ApplyPolygonAsClipBasic() { // [START android_compose_shapes_apply_as_clip] val hexagon = remember { - mutableStateOf( - RoundedPolygon( - 6, - rounding = CornerRounding(0.2f) - ) + RoundedPolygon( + 6, + rounding = CornerRounding(0.2f) ) } - val clip = remember { + val clip = remember(hexagon) { RoundedPolygonShape(polygon = hexagon) } Box( @@ -403,11 +408,9 @@ fun ApplyPolygonAsClipBasic() { fun ApplyPolygonAsClipImage() { // [START android_compose_shapes_apply_as_clip_advanced] val hexagon = remember { - mutableStateOf( - RoundedPolygon( - 6, - rounding = CornerRounding(0.2f) - ) + RoundedPolygon( + 6, + rounding = CornerRounding(0.2f) ) } val clip = remember(hexagon) { @@ -439,8 +442,8 @@ fun ApplyPolygonAsClipImage() { // [START android_compose_shapes_custom_rotating_morph_shape] class CustomRotatingMorphShape( private val morph: Morph, - private val percentage: State, - private val rotation: State + private val percentage: Float, + private val rotation: Float ) : Shape { private val matrix = Matrix() @@ -453,9 +456,9 @@ class CustomRotatingMorphShape( // By default this stretches the path to the size of the container, if you don't want stretching, use the same size.width for both x and y. matrix.scale(size.width / 2f, size.height / 2f) matrix.translate(1f, 1f) - matrix.rotateZ(rotation.value) + matrix.rotateZ(rotation) - val path = morph.toComposePath(progress = percentage.value) + val path = morph.toPath(progress = percentage).asComposePath() path.transform(matrix) return Outline.Generic(path) @@ -499,13 +502,6 @@ private fun RotatingScallopedProfilePic() { ), label = "animatedMorphProgress" ) - val morphingShape = remember { - CustomRotatingMorphShape( - morph, - animatedProgress, - animatedRotation - ) - } Box( modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center @@ -515,7 +511,13 @@ private fun RotatingScallopedProfilePic() { contentDescription = "Dog", contentScale = ContentScale.Crop, modifier = Modifier - .clip(morphingShape) + .clip( + CustomRotatingMorphShape( + morph, + animatedProgress.value, + animatedRotation.value + ) + ) .size(200.dp) ) } @@ -570,8 +572,7 @@ private fun CartesianPoints() { Box( modifier = Modifier .drawWithCache { - val roundedPolygonPath = polygon.cubics - .toPath() + val roundedPolygonPath = polygon.toPath().asComposePath() onDrawBehind { scale(size.width * 0.5f, size.width * 0.5f) { translate(size.width * 0.5f, size.height * 0.5f) { From be01a9671fcf97891c2640738a7d0735e1a102a1 Mon Sep 17 00:00:00 2001 From: Ben Trengrove Date: Tue, 3 Sep 2024 21:05:09 +1200 Subject: [PATCH 38/59] Fix text snippets in latest (#326) * Fix text snippets in latest * Apply Spotless --- .../compose/snippets/text/TextSnippets.kt | 242 ++++++++++++++---- 1 file changed, 191 insertions(+), 51 deletions(-) diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt index 6a704caad..57e521cf3 100644 --- a/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt +++ b/compose/snippets/src/main/java/com/example/compose/snippets/text/TextSnippets.kt @@ -18,15 +18,22 @@ package com.example.compose.snippets.text -import android.util.Log +import androidx.compose.foundation.BorderStroke +import androidx.compose.foundation.background +import androidx.compose.foundation.basicMarquee +import androidx.compose.foundation.border +import androidx.compose.foundation.layout.Arrangement +import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column +import androidx.compose.foundation.layout.Row +import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.width -import androidx.compose.foundation.text.ClickableText import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.text.selection.DisableSelection import androidx.compose.foundation.text.selection.SelectionContainer import androidx.compose.material3.LocalTextStyle +import androidx.compose.material3.MaterialTheme import androidx.compose.material3.OutlinedTextField import androidx.compose.material3.Text import androidx.compose.material3.TextField @@ -36,6 +43,7 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.Offset import androidx.compose.ui.graphics.Brush @@ -44,7 +52,6 @@ import androidx.compose.ui.graphics.Color.Companion.Cyan import androidx.compose.ui.graphics.Shadow import androidx.compose.ui.platform.LocalUriHandler import androidx.compose.ui.res.stringResource -import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.LinkAnnotation import androidx.compose.ui.text.ParagraphStyle import androidx.compose.ui.text.PlatformTextStyle @@ -58,11 +65,14 @@ import androidx.compose.ui.text.font.FontStyle import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.PasswordVisualTransformation +import androidx.compose.ui.text.style.Hyphens +import androidx.compose.ui.text.style.LineBreak import androidx.compose.ui.text.style.LineHeightStyle import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.text.withLink import androidx.compose.ui.text.withStyle +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.em import androidx.compose.ui.unit.sp @@ -407,54 +417,6 @@ private object TextPartiallySelectableSnippet { // [END android_compose_text_partial_selection] } -private object TextClickableSnippet { - // [START android_compose_text_clickable] - @Composable - fun SimpleClickableText() { - ClickableText(text = AnnotatedString("Click Me"), onClick = { offset -> - Log.d("ClickableText", "$offset -th character is clicked.") - }) - } - // [END android_compose_text_clickable] -} - -private object TextClickableAnnotatedSnippet { - // [START android_compose_text_clickable_annotated] - @Composable - fun AnnotatedClickableText() { - val annotatedText = buildAnnotatedString { - append("Click ") - - // We attach this *URL* annotation to the following content - // until `pop()` is called - pushStringAnnotation( - tag = "URL", annotation = "https://developer.android.com" - ) - withStyle( - style = SpanStyle( - color = Color.Blue, fontWeight = FontWeight.Bold - ) - ) { - append("here") - } - - pop() - } - - ClickableText(text = annotatedText, onClick = { offset -> - // We check if there is an *URL* annotation attached to the text - // at the clicked position - annotatedText.getStringAnnotations( - tag = "URL", start = offset, end = offset - ).firstOrNull()?.let { annotation -> - // If yes, we log its value - Log.d("Clicked URL", annotation.item) - } - }) - } - // [END android_compose_text_clickable_annotated] -} - private object TextTextFieldSnippet { // [START android_compose_text_textfield_filled] @Composable @@ -625,6 +587,184 @@ fun AnnotatedStringWithListenerSample() { } // [END android_compose_text_link_2] +@Composable +private fun TextSample(samples: MapUnit>) { + MaterialTheme { + Box( + Modifier + .background(MaterialTheme.colorScheme.background) + .fillMaxWidth() + ) { + Column( + verticalArrangement = Arrangement.spacedBy(10.dp), + modifier = Modifier.padding(10.dp) + ) { + samples.forEach { (title, content) -> + Row(Modifier.fillMaxWidth()) { + content() + Text( + text = title, + textAlign = TextAlign.Center, + style = MaterialTheme.typography.titleLarge, + modifier = Modifier + .fillMaxWidth() + .align(Alignment.CenterVertically) + ) + } + } + } + } + } +} + +private const val SAMPLE_LONG_TEXT = + "Jetpack Compose is Android’s modern toolkit for building native UI. " + + "It simplifies and accelerates UI development on Android bringing your apps " + + "to life with less code, powerful tools, and intuitive Kotlin APIs. " + + "It makes building Android UI faster and easier." +@Composable +@Preview +fun LineBreakSample() { + // [START android_compose_text_line_break] + TextSample( + samples = mapOf( + "Simple" to { + Text( + text = SAMPLE_LONG_TEXT, + modifier = Modifier + .width(130.dp) + .border(BorderStroke(1.dp, Color.Gray)), + fontSize = 14.sp, + style = TextStyle.Default.copy( + lineBreak = LineBreak.Simple + ) + ) + }, + "Paragraph" to { + Text( + text = SAMPLE_LONG_TEXT, + modifier = Modifier + .width(130.dp) + .border(BorderStroke(1.dp, Color.Gray)), + fontSize = 14.sp, + style = TextStyle.Default.copy( + lineBreak = LineBreak.Paragraph + ) + ) + } + ) + ) + // [END android_compose_text_line_break] +} + +@Preview +@Composable +fun SmallScreenTextSnippet() { + // [START android_compose_text_paragraph] + TextSample( + samples = mapOf( + "Balanced" to { + val smallScreenAdaptedParagraph = + LineBreak.Paragraph.copy(strategy = LineBreak.Strategy.Balanced) + Text( + text = SAMPLE_LONG_TEXT, + modifier = Modifier + .width(200.dp) + .border(BorderStroke(1.dp, Color.Gray)), + fontSize = 14.sp, + style = TextStyle.Default.copy( + lineBreak = smallScreenAdaptedParagraph + ) + ) + }, + "Default" to { + Text( + text = SAMPLE_LONG_TEXT, + modifier = Modifier + .width(200.dp) + .border(BorderStroke(1.dp, Color.Gray)), + fontSize = 14.sp, + style = TextStyle.Default + ) + } + ) + ) + // [END android_compose_text_paragraph] +} + +private object CJKTextSnippet { + @Composable + fun CJKSample() { + // [START android_compose_text_cjk] + val customTitleLineBreak = LineBreak( + strategy = LineBreak.Strategy.HighQuality, + strictness = LineBreak.Strictness.Strict, + wordBreak = LineBreak.WordBreak.Phrase + ) + Text( + text = "あなたに寄り添う最先端のテクノロジー。", + modifier = Modifier.width(250.dp), + fontSize = 14.sp, + style = TextStyle.Default.copy( + lineBreak = customTitleLineBreak + ) + ) + // [END android_compose_text_cjk] + } +} + +@Preview +@Composable +fun HyphenateTextSnippet() { + // [START android_compose_text_hyphen] + TextSample( + samples = mapOf( + "Hyphens - None" to { + Text( + text = SAMPLE_LONG_TEXT, + modifier = Modifier + .width(130.dp) + .border(BorderStroke(1.dp, Color.Gray)), + fontSize = 14.sp, + style = TextStyle.Default.copy( + lineBreak = LineBreak.Paragraph, + hyphens = Hyphens.None + ) + ) + }, + "Hyphens - Auto" to { + Text( + text = SAMPLE_LONG_TEXT, + modifier = Modifier + .width(130.dp) + .border(BorderStroke(1.dp, Color.Gray)), + fontSize = 14.sp, + style = TextStyle.Default.copy( + lineBreak = LineBreak.Paragraph, + hyphens = Hyphens.Auto + ) + ) + } + ) + ) + // [END android_compose_text_hyphen] +} + +@Preview(showBackground = true) +// [START android_compose_text_marquee] +@Composable +fun BasicMarqueeSample() { + // Marquee only animates when the content doesn't fit in the max width. + Column(Modifier.width(400.dp)) { + Text( + "Learn about why it's great to use Jetpack Compose", + modifier = Modifier.basicMarquee(), + fontSize = 50.sp + ) + } +} +// [END android_compose_text_marquee] + private val firaSansFamily = FontFamily() val LightBlue = Color(0xFF0066FF) From 7045d7d897951c0b3e9b86fc59c962e63359d917 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Tue, 3 Sep 2024 10:05:32 +0100 Subject: [PATCH 39/59] =?UTF-8?q?=F0=9F=A4=96=20Sync=20main=20to=20latest?= =?UTF-8?q?=20(#327)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Migrate CompositionLocal snippets to m3 (#321) * Migrate Custom design system page to M3 (#325) * Migrate Custom design system page to M3 * Apply Spotless --------- Co-authored-by: riggaroo --------- Co-authored-by: Ben Trengrove Co-authored-by: Rebecca Franks Co-authored-by: riggaroo From a33c495dfdfa7120b324286b14a6d28ceb261d5f Mon Sep 17 00:00:00 2001 From: Alex Vanyo Date: Mon, 29 Jul 2024 11:00:18 +0100 Subject: [PATCH 40/59] Updating DeviceConfigurationOverride snippet comment (#232) (cherry picked from commit a84c80d425b31d72444a4d7157614899ee7df164) --- .../DeviceConfigurationOverrideSnippets.kt | 65 +++++++++++++++++++ gradle/libs.versions.toml | 26 ++++---- 2 files changed, 78 insertions(+), 13 deletions(-) create mode 100644 compose/snippets/src/androidTest/java/com/example/compose/snippets/deviceconfigurationoverride/DeviceConfigurationOverrideSnippets.kt diff --git a/compose/snippets/src/androidTest/java/com/example/compose/snippets/deviceconfigurationoverride/DeviceConfigurationOverrideSnippets.kt b/compose/snippets/src/androidTest/java/com/example/compose/snippets/deviceconfigurationoverride/DeviceConfigurationOverrideSnippets.kt new file mode 100644 index 000000000..fca68ad4f --- /dev/null +++ b/compose/snippets/src/androidTest/java/com/example/compose/snippets/deviceconfigurationoverride/DeviceConfigurationOverrideSnippets.kt @@ -0,0 +1,65 @@ +/* + * Copyright 2024 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.example.compose.snippets.deviceconfigurationoverride + +import androidx.compose.material3.Text +import androidx.compose.ui.test.DeviceConfigurationOverride +import androidx.compose.ui.test.FontScale +import androidx.compose.ui.test.FontWeightAdjustment +import androidx.compose.ui.test.ForcedSize +import androidx.compose.ui.test.junit4.createComposeRule +import androidx.compose.ui.test.then +import androidx.compose.ui.unit.DpSize +import androidx.compose.ui.unit.dp +import com.example.compose.snippets.interop.MyScreen +import org.junit.Ignore +import org.junit.Rule +import org.junit.Test + +class DeviceConfigurationOverrideSnippetsTest { + @get:Rule + val composeTestRule = createComposeRule() + + @Ignore("Snippet test") + @Test + fun forcedSize() { + // [START android_compose_deviceconfigurationoverride_forcedsize] + composeTestRule.setContent { + DeviceConfigurationOverride( + DeviceConfigurationOverride.ForcedSize(DpSize(1280.dp, 800.dp)) + ) { + MyScreen() // Will be rendered in the space for 1280dp by 800dp without clipping. + } + } + // [END android_compose_deviceconfigurationoverride_forcedsize] + } + + @Ignore("Snippet test") + @Test + fun then() { + // [START android_compose_deviceconfigurationoverride_then] + composeTestRule.setContent { + DeviceConfigurationOverride( + DeviceConfigurationOverride.FontScale(1.5f) then + DeviceConfigurationOverride.FontWeightAdjustment(200) + ) { + Text(text = "text with increased scale and weight") + } + } + // [END android_compose_deviceconfigurationoverride_then] + } +} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index b4ef52918..6dfba233f 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -1,22 +1,22 @@ [versions] accompanist = "0.34.0" androidGradlePlugin = "8.4.2" -androidx-activity-compose = "1.9.1" +androidx-activity-compose = "1.9.2" androidx-appcompat = "1.7.0" -androidx-compose-bom = "2024.06.00" +androidx-compose-bom = "2024.09.00" androidx-compose-ui-test = "1.7.0-alpha08" androidx-constraintlayout = "2.1.4" androidx-constraintlayout-compose = "1.0.1" androidx-coordinator-layout = "1.2.0" androidx-corektx = "1.13.1" -androidx-emoji2-views = "1.4.0" -androidx-fragment-ktx = "1.8.2" +androidx-emoji2-views = "1.5.0" +androidx-fragment-ktx = "1.8.3" androidx-glance-appwidget = "1.1.0" -androidx-lifecycle-compose = "2.8.4" -androidx-lifecycle-runtime-compose = "2.8.4" -androidx-navigation = "2.8.0-rc01" -androidx-paging = "3.3.1" -androidx-test = "1.5.0" +androidx-lifecycle-compose = "2.8.5" +androidx-lifecycle-runtime-compose = "2.8.5" +androidx-navigation = "2.8.0" +androidx-paging = "3.3.2" +androidx-test = "1.6.1" androidx-test-espresso = "3.5.1" androidx-window = "1.3.0" androidxHiltNavigationCompose = "1.2.0" @@ -24,7 +24,7 @@ coil = "2.6.0" # @keep compileSdk = "34" coreSplashscreen = "1.0.1" -compose-latest = "1.7.0-beta06" +compose-latest = "1.7.0" coroutines = "1.7.3" google-maps = "18.2.0" gradle-versions = "0.51.0" @@ -37,8 +37,8 @@ kotlinxSerializationJson = "1.6.3" ksp = "1.8.0-1.0.9" maps-compose = "4.3.2" material = "1.4.0-beta01" -material3-adaptive = "1.0.0-rc01" -material3-adaptive-navigation-suite = "1.3.0-rc01" +material3-adaptive = "1.0.0" +material3-adaptive-navigation-suite = "1.3.0" media3 = "1.3.1" # @keep minSdk = "21" @@ -49,7 +49,7 @@ targetSdk = "34" version-catalog-update = "0.8.3" wearComposeFoundation = "1.3.1" wearComposeMaterial = "1.3.1" -composeUiTooling = "1.3.1" +composeUiTooling = "1.4.0" [libraries] accompanist-adaptive = { module = "com.google.accompanist:accompanist-adaptive", version.ref = "accompanist" } From d40747f4798757ef1c5322e78472dad6701b5e96 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 22 Feb 2024 09:03:48 +0000 Subject: [PATCH 41/59] Bump actions/checkout from 3 to 4 (#222) Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v3...v4) --- updated-dependencies: - dependency-name: actions/checkout dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit 2f34f3b1f916f41d7c3b84286b24a9e1d57951f6) --- .github/workflows/apply_spotless.yml | 2 +- .github/workflows/build.yml | 2 +- .github/workflows/sync_main_latest.yml | 2 +- .github/workflows/update_deps.yml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/apply_spotless.yml b/.github/workflows/apply_spotless.yml index a63f272e1..907246107 100644 --- a/.github/workflows/apply_spotless.yml +++ b/.github/workflows/apply_spotless.yml @@ -30,7 +30,7 @@ jobs: steps: - name: Checkout Repository - uses: actions/checkout@v3 + uses: actions/checkout@v4 with: token: ${{ secrets.PAT || github.token }} fetch-depth: 0 diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2a27e8002..4ace09b7e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,7 +29,7 @@ jobs: timeout-minutes: 30 steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: token: ${{ secrets.PAT || github.token }} - name: set up Java 17 diff --git a/.github/workflows/sync_main_latest.yml b/.github/workflows/sync_main_latest.yml index a196b5dae..f83c1a331 100644 --- a/.github/workflows/sync_main_latest.yml +++ b/.github/workflows/sync_main_latest.yml @@ -10,7 +10,7 @@ jobs: name: Syncing branches steps: - name: Checkout - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Merge main into latest run: git checkout latest && git merge main diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index 9f92a69b2..d01919741 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -7,7 +7,7 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - name: set up JDK 17 uses: actions/setup-java@v3 with: From 89e3cfe1925dc1f7f0bee65a80e1842ac6403827 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 20 Feb 2024 13:18:24 +0000 Subject: [PATCH 42/59] Create dependabot.yml (#218) (cherry picked from commit db5ffc06e07c4830fbc362517680935b1ebd78c6) --- .github/dependabot.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 000000000..0d08e261a --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file + +version: 2 +updates: + - package-ecosystem: "github-actions" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "weekly" From a6199b5e898a7eca96fd8d8f88c3171882e63435 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 12:07:07 -0800 Subject: [PATCH 43/59] Bump stefanzweifel/git-auto-commit-action from 4 to 5 (#221) Bumps [stefanzweifel/git-auto-commit-action](https://github.com/stefanzweifel/git-auto-commit-action) from 4 to 5. - [Release notes](https://github.com/stefanzweifel/git-auto-commit-action/releases) - [Changelog](https://github.com/stefanzweifel/git-auto-commit-action/blob/master/CHANGELOG.md) - [Commits](https://github.com/stefanzweifel/git-auto-commit-action/compare/v4...v5) --- updated-dependencies: - dependency-name: stefanzweifel/git-auto-commit-action dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit d8ef2dd19f25b74bdbbd5e78f96cdfb30be61a3c) --- .github/workflows/apply_spotless.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/apply_spotless.yml b/.github/workflows/apply_spotless.yml index 907246107..8618e388b 100644 --- a/.github/workflows/apply_spotless.yml +++ b/.github/workflows/apply_spotless.yml @@ -45,7 +45,7 @@ jobs: run: ./gradlew :compose:spotlessApply --init-script gradle/init.gradle.kts --no-configuration-cache --stacktrace - name: Auto-commit if spotlessApply has changes - uses: stefanzweifel/git-auto-commit-action@v4 + uses: stefanzweifel/git-auto-commit-action@v5 with: commit_message: Apply Spotless From ac40734d4b7ece7de01956db153e52eafc4be4de Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 21 Feb 2024 12:06:44 -0800 Subject: [PATCH 44/59] Bump actions/setup-java from 2 to 4 (#220) Bumps [actions/setup-java](https://github.com/actions/setup-java) from 2 to 4. - [Release notes](https://github.com/actions/setup-java/releases) - [Commits](https://github.com/actions/setup-java/compare/v2...v4) --- updated-dependencies: - dependency-name: actions/setup-java dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> (cherry picked from commit cea0c7d4d7e3157ab751870cce0212f3dff2700a) --- .github/workflows/apply_spotless.yml | 2 +- .github/workflows/build.yml | 2 +- .github/workflows/update_deps.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/apply_spotless.yml b/.github/workflows/apply_spotless.yml index 8618e388b..db01dad52 100644 --- a/.github/workflows/apply_spotless.yml +++ b/.github/workflows/apply_spotless.yml @@ -36,7 +36,7 @@ jobs: fetch-depth: 0 - name: set up Java 17 - uses: actions/setup-java@v2 + uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '17' diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4ace09b7e..8337b4237 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,7 +33,7 @@ jobs: with: token: ${{ secrets.PAT || github.token }} - name: set up Java 17 - uses: actions/setup-java@v2 + uses: actions/setup-java@v4 with: distribution: 'zulu' java-version: '17' diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index d01919741..f02d45284 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -9,7 +9,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: set up JDK 17 - uses: actions/setup-java@v3 + uses: actions/setup-java@v4 with: java-version: 17 distribution: 'zulu' From 47579b86625fa818a01ddf2de4002272bc8e80d3 Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Thu, 29 Feb 2024 08:27:39 -0800 Subject: [PATCH 45/59] Set git config user for sync_main_latest workflow. (#230) * Set git config user for sync_main_latest workflow. * Update PR description. (cherry picked from commit ad9ffb0f36a9aaa35c57690430dca98f97c021d5) --- .github/workflows/sync_main_latest.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/sync_main_latest.yml b/.github/workflows/sync_main_latest.yml index f83c1a331..6777c56cb 100644 --- a/.github/workflows/sync_main_latest.yml +++ b/.github/workflows/sync_main_latest.yml @@ -12,6 +12,9 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Set git config user + run: git config user.email "compose-devrel-github-bot@google.com" && git config user.name "compose-devrel-github-bot" + - name: Merge main into latest run: git checkout latest && git merge main @@ -27,5 +30,5 @@ jobs: branch: bot-sync-main delete-branch: true title: '🤖 Sync main to latest' - body: Updated dependencies + body: 'Update `latest` with `main`' reviewers: ${{ github.actor }} From cbec137737755ae2a1849cebd0c6a006aec5c02b Mon Sep 17 00:00:00 2001 From: Chris Arriola Date: Mon, 26 Feb 2024 17:33:36 +0000 Subject: [PATCH 46/59] Fix merge --- .github/workflows/sync_main_latest.yml | 3 ++- .github/workflows/update_deps.yml | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.github/workflows/sync_main_latest.yml b/.github/workflows/sync_main_latest.yml index 6777c56cb..866761818 100644 --- a/.github/workflows/sync_main_latest.yml +++ b/.github/workflows/sync_main_latest.yml @@ -1,5 +1,6 @@ name: Sync main and latest on: + workflow_dispatch: push: branches: - main @@ -16,7 +17,7 @@ jobs: run: git config user.email "compose-devrel-github-bot@google.com" && git config user.name "compose-devrel-github-bot" - name: Merge main into latest - run: git checkout latest && git merge main + run: git fetch && git switch latest && git merge -s ours origin/main --allow-unrelated-histories - name: Create pull request id: cpr diff --git a/.github/workflows/update_deps.yml b/.github/workflows/update_deps.yml index f02d45284..ffe44b0e0 100644 --- a/.github/workflows/update_deps.yml +++ b/.github/workflows/update_deps.yml @@ -19,7 +19,7 @@ jobs: run: ./gradlew versionCatalogUpdate - name: Create pull request id: cpr - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.PAT }} commit-message: 🤖 Update Dependencies From a0047891b53b8eef6d8c1063166255a28dd2b57f Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Fri, 6 Sep 2024 10:36:49 +0100 Subject: [PATCH 47/59] Fix merge --- .../android/compose/recomposehighlighter/MainActivity.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/MainActivity.kt b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/MainActivity.kt index 3f7be75ec..b4c0e9e10 100644 --- a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/MainActivity.kt +++ b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/MainActivity.kt @@ -26,6 +26,7 @@ import androidx.compose.material.Button import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue +import androidx.compose.runtime.mutableIntStateOf import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue @@ -43,7 +44,7 @@ class MainActivity : ComponentActivity() { @Composable private fun Content() { - var counter by remember { mutableStateOf(0) } + var counter by remember { mutableIntStateOf(0) } Column( Modifier .fillMaxSize() From 113c7692a7db7b3710009c9a3b3161a23649c424 Mon Sep 17 00:00:00 2001 From: riggaroo Date: Fri, 6 Sep 2024 09:38:23 +0000 Subject: [PATCH 48/59] Apply Spotless --- .../example/android/compose/recomposehighlighter/MainActivity.kt | 1 - 1 file changed, 1 deletion(-) diff --git a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/MainActivity.kt b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/MainActivity.kt index b4c0e9e10..cd3540ab7 100644 --- a/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/MainActivity.kt +++ b/compose/recomposehighlighter/src/main/java/com/example/android/compose/recomposehighlighter/MainActivity.kt @@ -27,7 +27,6 @@ import androidx.compose.material.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableIntStateOf -import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier From f7f7cfefb4a5548a7cb1a1b8ec4683fb2bbd217a Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Fri, 6 Sep 2024 10:59:13 +0100 Subject: [PATCH 49/59] Fix merge --- .github/workflows/sync_main_latest.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/sync_main_latest.yml b/.github/workflows/sync_main_latest.yml index 866761818..38c56bbb3 100644 --- a/.github/workflows/sync_main_latest.yml +++ b/.github/workflows/sync_main_latest.yml @@ -21,7 +21,7 @@ jobs: - name: Create pull request id: cpr - uses: peter-evans/create-pull-request@v4 + uses: peter-evans/create-pull-request@v6 with: token: ${{ secrets.PAT }} commit-message: 🤖 Sync main to latest From e946cd378462b283d77c4cc80c04c0bad6c9f1e3 Mon Sep 17 00:00:00 2001 From: Rebecca Franks Date: Tue, 1 Oct 2024 15:29:42 +0100 Subject: [PATCH 50/59] Update gradle-wrapper.properties --- gradle/wrapper/gradle-wrapper.properties | 1 - 1 file changed, 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0d5f9dbf0..0aaefbcaf 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,4 +1,3 @@ -#Tue May 14 19:06:12 BST 2024 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists distributionUrl=https\://services.gradle.org/distributions/gradle-8.10.1-bin.zip From a8cb925d5adc937988168560b9d55d5699335dad Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Wed, 2 Oct 2024 09:27:08 +0100 Subject: [PATCH 51/59] Added two snippets for showcasing how to do Masking and Clipping in Compose (#362) (#365) * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Apply Spotless * Fix email input snippet * Migrate to use BasicSecureTextField. * Updated to use BasicSecureTextField. * Added clipping and faded edge examples * Apply Spotless * Clean up snippet * Clean up snippet --------- Co-authored-by: Rebecca Franks Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo From 8331b502410c90ca1f7940486ad25463220569a1 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Thu, 3 Oct 2024 13:45:42 +0100 Subject: [PATCH 52/59] =?UTF-8?q?=F0=9F=A4=96=20Sync=20main=20to=20latest?= =?UTF-8?q?=20(#367)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added two snippets for showcasing how to do Masking and Clipping in Compose (#362) * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Apply Spotless * Fix email input snippet * Migrate to use BasicSecureTextField. * Updated to use BasicSecureTextField. * Added clipping and faded edge examples * Apply Spotless * Clean up snippet * Clean up snippet --------- Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo * 🤖 Update Dependencies (#366) * Add Material Carousel (#363) * Add Carousel * Apply Spotless * add to components * Apply Spotless * Clean up landing screens, using Scaffold and list items. * Apply Spotless * Review comments --------- Co-authored-by: riggaroo --------- Co-authored-by: Rebecca Franks Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo From 2251a554e3f2fc64829eb06f48ee075cd2b0a388 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Mon, 9 Dec 2024 14:07:09 +0000 Subject: [PATCH 53/59] =?UTF-8?q?=F0=9F=A4=96=20Sync=20main=20to=20latest?= =?UTF-8?q?=20(#372)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added two snippets for showcasing how to do Masking and Clipping in Compose (#362) * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Apply Spotless * Fix email input snippet * Migrate to use BasicSecureTextField. * Updated to use BasicSecureTextField. * Added clipping and faded edge examples * Apply Spotless * Clean up snippet * Clean up snippet --------- Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo * 🤖 Update Dependencies (#366) * Add Material Carousel (#363) * Add Carousel * Apply Spotless * add to components * Apply Spotless * Clean up landing screens, using Scaffold and list items. * Apply Spotless * Review comments --------- Co-authored-by: riggaroo * Basic menu examples (#371) * basic menu examples * Make DropdownMenuWithDetails toggle expanded on click * Apply Spotless * Remove unneeded dependencies * Remove unneeded imports --------- Co-authored-by: jakeroseman * Filter chip dropdown menu (#375) * Filter chip dropdown menu * Apply Spotless * Add example of date picker textfield opening picker dialog on click (#376) * Add example of date picker textfield opening picker dialog on click * Apply Spotless * Add auto advance pager snippets (#377) * Add auto advance pager snippets * Apply Spotless --------- Co-authored-by: jakeroseman * Tooltip component examples (#373) * Tooltip component examples * Apply Spotless * Addressing PR comments * use LaunchedEffect to fix tooltip bug * Apply Spotless * Updated content descriptions --------- Co-authored-by: jakeroseman * Add pull to refresh snippets (#378) * Add pull to refresh snippets * Apply Spotless * Remove LaunchedEffect workaround (#379) * Remove LaunchedEffect workaround for library bug * Apply Spotless * Changed single var to val --------- Co-authored-by: jakeroseman * Navigation drawer examples (#380) * Basic navigation drawer examples * Add previews * Fix merge issue * Apply Spotless * rearrange functions * Narrowing the examples to just the example with nested items * Apply Spotless * refactoring as dismissable drawer * Fixing imports * refactor, new region tags * Renaming functions * Apply Spotless * Add horizontal padding to the drawer content * Apply Spotless * Make drawer content scrollable to make it work on small screens / landscape --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Snippets for keyboard input (#368) * Add a sample code for Keyboard Shortcuts Helper * Add a sample code for keyboard actions * Fix the issue on casting a Context object into Activity * Snippet for animated sorted list with add/remove buttons. (#381) * Snippet for animated sorted list with add/remove buttons. * Apply Spotless * Simplify adding an item to displayedItems * Use ViewModel to correctly extract business logic from UI --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Add basic segmented button examples (#383) * Add basic segmented button examples * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Adding views snippets module with Generated Preview samples (#384) * Adding views snippets module with Generated Preview samples * fixup --------- Co-authored-by: Summers Pittman * Adding top bar multi selection examples (#387) * Adding top bar multi selection examples * Apply Spotless * Remember some vals --------- Co-authored-by: jakeroseman * Include AppScaffold in navigation Snippet (#385) * Animate image size on scroll (#390) * Add animate image size on scroll example * Add simple comments and rename some variables * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Add basic HTML text styling example (#389) * Add basic HTML text styling example * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * 🤖 Update Dependencies (#391) * 🤖 Update Dependencies * Update compileSdk to 35 --------- Co-authored-by: Jolanda Verhoef * add in predictive back snippets for NavHost and predictive back handler (#394) * add in predictive back snippets * Apply Spotless * add in basic predictivebackhandler composable example * Apply Spotless --------- Co-authored-by: trambui09 * Add region tags to auto advance pager examples (#398) * Init Wear Tiles snippets (#400) * Init Wear Tiles snippets * Add snippet markers * Add manifest snippet markers * Rename manifest snippet markers * Create misc module, add broadcast receiver snippets (#397) * Create misc module, add broadcast receiver snippets * Apply Spotless * Add live search with FilterTextView example (#402) * Add live search with FilterTextView example * Apply Spotless --------- Co-authored-by: jakeroseman * Add single option radio button example (#401) * Add single option radio button example * Apply Spotless * Apply Spotless --------- Co-authored-by: jakeroseman * update to use type safe routes (#399) * Migrated relevant MotionCompose snippets into snippets (#411) * Migrated relevant MotionCompose snippets into snippets * Apply Spotless --------- Co-authored-by: riggaroo --------- Co-authored-by: Rebecca Franks Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef Co-authored-by: N. Shimizu Co-authored-by: Hoyt Summers Pittman Co-authored-by: Summers Pittman Co-authored-by: Chiara Chiappini Co-authored-by: Tram Bui <62119967+trambui09@users.noreply.github.com> Co-authored-by: trambui09 Co-authored-by: Michael Stillwell From 103b9cede83986bb3f4b289678ffa78aee9a3a8c Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Tue, 10 Dec 2024 10:11:09 +0000 Subject: [PATCH 54/59] =?UTF-8?q?=F0=9F=A4=96=20Sync=20main=20to=20latest?= =?UTF-8?q?=20(#414)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added two snippets for showcasing how to do Masking and Clipping in Compose (#362) * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Apply Spotless * Fix email input snippet * Migrate to use BasicSecureTextField. * Updated to use BasicSecureTextField. * Added clipping and faded edge examples * Apply Spotless * Clean up snippet * Clean up snippet --------- Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo * 🤖 Update Dependencies (#366) * Add Material Carousel (#363) * Add Carousel * Apply Spotless * add to components * Apply Spotless * Clean up landing screens, using Scaffold and list items. * Apply Spotless * Review comments --------- Co-authored-by: riggaroo * Basic menu examples (#371) * basic menu examples * Make DropdownMenuWithDetails toggle expanded on click * Apply Spotless * Remove unneeded dependencies * Remove unneeded imports --------- Co-authored-by: jakeroseman * Filter chip dropdown menu (#375) * Filter chip dropdown menu * Apply Spotless * Add example of date picker textfield opening picker dialog on click (#376) * Add example of date picker textfield opening picker dialog on click * Apply Spotless * Add auto advance pager snippets (#377) * Add auto advance pager snippets * Apply Spotless --------- Co-authored-by: jakeroseman * Tooltip component examples (#373) * Tooltip component examples * Apply Spotless * Addressing PR comments * use LaunchedEffect to fix tooltip bug * Apply Spotless * Updated content descriptions --------- Co-authored-by: jakeroseman * Add pull to refresh snippets (#378) * Add pull to refresh snippets * Apply Spotless * Remove LaunchedEffect workaround (#379) * Remove LaunchedEffect workaround for library bug * Apply Spotless * Changed single var to val --------- Co-authored-by: jakeroseman * Navigation drawer examples (#380) * Basic navigation drawer examples * Add previews * Fix merge issue * Apply Spotless * rearrange functions * Narrowing the examples to just the example with nested items * Apply Spotless * refactoring as dismissable drawer * Fixing imports * refactor, new region tags * Renaming functions * Apply Spotless * Add horizontal padding to the drawer content * Apply Spotless * Make drawer content scrollable to make it work on small screens / landscape --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Snippets for keyboard input (#368) * Add a sample code for Keyboard Shortcuts Helper * Add a sample code for keyboard actions * Fix the issue on casting a Context object into Activity * Snippet for animated sorted list with add/remove buttons. (#381) * Snippet for animated sorted list with add/remove buttons. * Apply Spotless * Simplify adding an item to displayedItems * Use ViewModel to correctly extract business logic from UI --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Add basic segmented button examples (#383) * Add basic segmented button examples * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Adding views snippets module with Generated Preview samples (#384) * Adding views snippets module with Generated Preview samples * fixup --------- Co-authored-by: Summers Pittman * Adding top bar multi selection examples (#387) * Adding top bar multi selection examples * Apply Spotless * Remember some vals --------- Co-authored-by: jakeroseman * Include AppScaffold in navigation Snippet (#385) * Animate image size on scroll (#390) * Add animate image size on scroll example * Add simple comments and rename some variables * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Add basic HTML text styling example (#389) * Add basic HTML text styling example * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * 🤖 Update Dependencies (#391) * 🤖 Update Dependencies * Update compileSdk to 35 --------- Co-authored-by: Jolanda Verhoef * add in predictive back snippets for NavHost and predictive back handler (#394) * add in predictive back snippets * Apply Spotless * add in basic predictivebackhandler composable example * Apply Spotless --------- Co-authored-by: trambui09 * Add region tags to auto advance pager examples (#398) * Init Wear Tiles snippets (#400) * Init Wear Tiles snippets * Add snippet markers * Add manifest snippet markers * Rename manifest snippet markers * Create misc module, add broadcast receiver snippets (#397) * Create misc module, add broadcast receiver snippets * Apply Spotless * Add live search with FilterTextView example (#402) * Add live search with FilterTextView example * Apply Spotless --------- Co-authored-by: jakeroseman * Add single option radio button example (#401) * Add single option radio button example * Apply Spotless * Apply Spotless --------- Co-authored-by: jakeroseman * update to use type safe routes (#399) * Migrated relevant MotionCompose snippets into snippets (#411) * Migrated relevant MotionCompose snippets into snippets * Apply Spotless --------- Co-authored-by: riggaroo * Moving location permissions snippets to repo (#413) * Moving location permissions snippets to repo * Apply Spotless * rationalize class names * Fixing region tags --------- Co-authored-by: jakeroseman --------- Co-authored-by: Rebecca Franks Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef Co-authored-by: N. Shimizu Co-authored-by: Hoyt Summers Pittman Co-authored-by: Summers Pittman Co-authored-by: Chiara Chiappini Co-authored-by: Tram Bui <62119967+trambui09@users.noreply.github.com> Co-authored-by: trambui09 Co-authored-by: Michael Stillwell From 3fa4ffa092b843a6d1979f569103adeab0e607f8 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Tue, 10 Dec 2024 14:53:28 +0000 Subject: [PATCH 55/59] =?UTF-8?q?=F0=9F=A4=96=20Sync=20main=20to=20latest?= =?UTF-8?q?=20(#417)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added two snippets for showcasing how to do Masking and Clipping in Compose (#362) * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Apply Spotless * Fix email input snippet * Migrate to use BasicSecureTextField. * Updated to use BasicSecureTextField. * Added clipping and faded edge examples * Apply Spotless * Clean up snippet * Clean up snippet --------- Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo * 🤖 Update Dependencies (#366) * Add Material Carousel (#363) * Add Carousel * Apply Spotless * add to components * Apply Spotless * Clean up landing screens, using Scaffold and list items. * Apply Spotless * Review comments --------- Co-authored-by: riggaroo * Basic menu examples (#371) * basic menu examples * Make DropdownMenuWithDetails toggle expanded on click * Apply Spotless * Remove unneeded dependencies * Remove unneeded imports --------- Co-authored-by: jakeroseman * Filter chip dropdown menu (#375) * Filter chip dropdown menu * Apply Spotless * Add example of date picker textfield opening picker dialog on click (#376) * Add example of date picker textfield opening picker dialog on click * Apply Spotless * Add auto advance pager snippets (#377) * Add auto advance pager snippets * Apply Spotless --------- Co-authored-by: jakeroseman * Tooltip component examples (#373) * Tooltip component examples * Apply Spotless * Addressing PR comments * use LaunchedEffect to fix tooltip bug * Apply Spotless * Updated content descriptions --------- Co-authored-by: jakeroseman * Add pull to refresh snippets (#378) * Add pull to refresh snippets * Apply Spotless * Remove LaunchedEffect workaround (#379) * Remove LaunchedEffect workaround for library bug * Apply Spotless * Changed single var to val --------- Co-authored-by: jakeroseman * Navigation drawer examples (#380) * Basic navigation drawer examples * Add previews * Fix merge issue * Apply Spotless * rearrange functions * Narrowing the examples to just the example with nested items * Apply Spotless * refactoring as dismissable drawer * Fixing imports * refactor, new region tags * Renaming functions * Apply Spotless * Add horizontal padding to the drawer content * Apply Spotless * Make drawer content scrollable to make it work on small screens / landscape --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Snippets for keyboard input (#368) * Add a sample code for Keyboard Shortcuts Helper * Add a sample code for keyboard actions * Fix the issue on casting a Context object into Activity * Snippet for animated sorted list with add/remove buttons. (#381) * Snippet for animated sorted list with add/remove buttons. * Apply Spotless * Simplify adding an item to displayedItems * Use ViewModel to correctly extract business logic from UI --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Add basic segmented button examples (#383) * Add basic segmented button examples * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Adding views snippets module with Generated Preview samples (#384) * Adding views snippets module with Generated Preview samples * fixup --------- Co-authored-by: Summers Pittman * Adding top bar multi selection examples (#387) * Adding top bar multi selection examples * Apply Spotless * Remember some vals --------- Co-authored-by: jakeroseman * Include AppScaffold in navigation Snippet (#385) * Animate image size on scroll (#390) * Add animate image size on scroll example * Add simple comments and rename some variables * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Add basic HTML text styling example (#389) * Add basic HTML text styling example * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * 🤖 Update Dependencies (#391) * 🤖 Update Dependencies * Update compileSdk to 35 --------- Co-authored-by: Jolanda Verhoef * add in predictive back snippets for NavHost and predictive back handler (#394) * add in predictive back snippets * Apply Spotless * add in basic predictivebackhandler composable example * Apply Spotless --------- Co-authored-by: trambui09 * Add region tags to auto advance pager examples (#398) * Init Wear Tiles snippets (#400) * Init Wear Tiles snippets * Add snippet markers * Add manifest snippet markers * Rename manifest snippet markers * Create misc module, add broadcast receiver snippets (#397) * Create misc module, add broadcast receiver snippets * Apply Spotless * Add live search with FilterTextView example (#402) * Add live search with FilterTextView example * Apply Spotless --------- Co-authored-by: jakeroseman * Add single option radio button example (#401) * Add single option radio button example * Apply Spotless * Apply Spotless --------- Co-authored-by: jakeroseman * update to use type safe routes (#399) * Migrated relevant MotionCompose snippets into snippets (#411) * Migrated relevant MotionCompose snippets into snippets * Apply Spotless --------- Co-authored-by: riggaroo * Moving location permissions snippets to repo (#413) * Moving location permissions snippets to repo * Apply Spotless * rationalize class names * Fixing region tags --------- Co-authored-by: jakeroseman * Use VerticalDivider in IntrinsicSnippets (#369) Co-authored-by: Rebecca Franks --------- Co-authored-by: Rebecca Franks Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef Co-authored-by: N. Shimizu Co-authored-by: Hoyt Summers Pittman Co-authored-by: Summers Pittman Co-authored-by: Chiara Chiappini Co-authored-by: Tram Bui <62119967+trambui09@users.noreply.github.com> Co-authored-by: trambui09 Co-authored-by: Michael Stillwell Co-authored-by: David Mendoza From 92be7ef93af07f39ad4efa027577c1039b707f0d Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Mon, 6 Jan 2025 11:32:12 +0000 Subject: [PATCH 56/59] =?UTF-8?q?=F0=9F=A4=96=20Sync=20main=20to=20latest?= =?UTF-8?q?=20(#418)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added two snippets for showcasing how to do Masking and Clipping in Compose (#362) * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Apply Spotless * Fix email input snippet * Migrate to use BasicSecureTextField. * Updated to use BasicSecureTextField. * Added clipping and faded edge examples * Apply Spotless * Clean up snippet * Clean up snippet --------- Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo * 🤖 Update Dependencies (#366) * Add Material Carousel (#363) * Add Carousel * Apply Spotless * add to components * Apply Spotless * Clean up landing screens, using Scaffold and list items. * Apply Spotless * Review comments --------- Co-authored-by: riggaroo * Basic menu examples (#371) * basic menu examples * Make DropdownMenuWithDetails toggle expanded on click * Apply Spotless * Remove unneeded dependencies * Remove unneeded imports --------- Co-authored-by: jakeroseman * Filter chip dropdown menu (#375) * Filter chip dropdown menu * Apply Spotless * Add example of date picker textfield opening picker dialog on click (#376) * Add example of date picker textfield opening picker dialog on click * Apply Spotless * Add auto advance pager snippets (#377) * Add auto advance pager snippets * Apply Spotless --------- Co-authored-by: jakeroseman * Tooltip component examples (#373) * Tooltip component examples * Apply Spotless * Addressing PR comments * use LaunchedEffect to fix tooltip bug * Apply Spotless * Updated content descriptions --------- Co-authored-by: jakeroseman * Add pull to refresh snippets (#378) * Add pull to refresh snippets * Apply Spotless * Remove LaunchedEffect workaround (#379) * Remove LaunchedEffect workaround for library bug * Apply Spotless * Changed single var to val --------- Co-authored-by: jakeroseman * Navigation drawer examples (#380) * Basic navigation drawer examples * Add previews * Fix merge issue * Apply Spotless * rearrange functions * Narrowing the examples to just the example with nested items * Apply Spotless * refactoring as dismissable drawer * Fixing imports * refactor, new region tags * Renaming functions * Apply Spotless * Add horizontal padding to the drawer content * Apply Spotless * Make drawer content scrollable to make it work on small screens / landscape --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Snippets for keyboard input (#368) * Add a sample code for Keyboard Shortcuts Helper * Add a sample code for keyboard actions * Fix the issue on casting a Context object into Activity * Snippet for animated sorted list with add/remove buttons. (#381) * Snippet for animated sorted list with add/remove buttons. * Apply Spotless * Simplify adding an item to displayedItems * Use ViewModel to correctly extract business logic from UI --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Add basic segmented button examples (#383) * Add basic segmented button examples * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Adding views snippets module with Generated Preview samples (#384) * Adding views snippets module with Generated Preview samples * fixup --------- Co-authored-by: Summers Pittman * Adding top bar multi selection examples (#387) * Adding top bar multi selection examples * Apply Spotless * Remember some vals --------- Co-authored-by: jakeroseman * Include AppScaffold in navigation Snippet (#385) * Animate image size on scroll (#390) * Add animate image size on scroll example * Add simple comments and rename some variables * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Add basic HTML text styling example (#389) * Add basic HTML text styling example * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * 🤖 Update Dependencies (#391) * 🤖 Update Dependencies * Update compileSdk to 35 --------- Co-authored-by: Jolanda Verhoef * add in predictive back snippets for NavHost and predictive back handler (#394) * add in predictive back snippets * Apply Spotless * add in basic predictivebackhandler composable example * Apply Spotless --------- Co-authored-by: trambui09 * Add region tags to auto advance pager examples (#398) * Init Wear Tiles snippets (#400) * Init Wear Tiles snippets * Add snippet markers * Add manifest snippet markers * Rename manifest snippet markers * Create misc module, add broadcast receiver snippets (#397) * Create misc module, add broadcast receiver snippets * Apply Spotless * Add live search with FilterTextView example (#402) * Add live search with FilterTextView example * Apply Spotless --------- Co-authored-by: jakeroseman * Add single option radio button example (#401) * Add single option radio button example * Apply Spotless * Apply Spotless --------- Co-authored-by: jakeroseman * update to use type safe routes (#399) * Migrated relevant MotionCompose snippets into snippets (#411) * Migrated relevant MotionCompose snippets into snippets * Apply Spotless --------- Co-authored-by: riggaroo * Moving location permissions snippets to repo (#413) * Moving location permissions snippets to repo * Apply Spotless * rationalize class names * Fixing region tags --------- Co-authored-by: jakeroseman * Use VerticalDivider in IntrinsicSnippets (#369) Co-authored-by: Rebecca Franks * Add an example of Shared elements that are seekable using SeekableTransitionState (#416) * Added seekable predictive back (redoing commit) * Added seekable predictive back (redoing commit) * spotless * Delete SeekableSharedElement.kt * Apply Spotless * Add enableOnBackInvokedCallback * Add comments and fix custom seeking predictive back example. * Apply Spotless --------- Co-authored-by: riggaroo * 🤖 Update Dependencies (#427) * Adding SearchBar examples (#408) * Adding SearchBar examples * Apply Spotless * Add search bar examples to top compose examples * Add content descriptions * Delete shared/build/generated/res/pngs/debug/drawable-anydpi-v24/ic_launcher_foreground.xml * remove errant build files from branch * Apply Spotless --------- Co-authored-by: jakeroseman Co-authored-by: Rebecca Franks * Add Swipe to reveal examples (#412) * Add Swipe to reveal examples * Apply Spotless * Adding swipe to dismiss examples to the top compose examples. * Tidy up merge conflict errors --------- Co-authored-by: jakeroseman * Add example usage of keyframesWithSplines (#430) * Add example of keyframesWithSplines * Apply Spotless * PR Review comments. * PR Review comments. * Apply Spotless --------- Co-authored-by: riggaroo --------- Co-authored-by: Rebecca Franks Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef Co-authored-by: N. Shimizu Co-authored-by: Hoyt Summers Pittman Co-authored-by: Summers Pittman Co-authored-by: Chiara Chiappini Co-authored-by: Tram Bui <62119967+trambui09@users.noreply.github.com> Co-authored-by: trambui09 Co-authored-by: Michael Stillwell Co-authored-by: David Mendoza From 0bd4927223b9f8079cc07abc4f7c7bc5c8db009f Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Tue, 7 Jan 2025 15:38:24 +0000 Subject: [PATCH 57/59] =?UTF-8?q?=F0=9F=A4=96=20Sync=20main=20to=20latest?= =?UTF-8?q?=20(#433)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added two snippets for showcasing how to do Masking and Clipping in Compose (#362) * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Apply Spotless * Fix email input snippet * Migrate to use BasicSecureTextField. * Updated to use BasicSecureTextField. * Added clipping and faded edge examples * Apply Spotless * Clean up snippet * Clean up snippet --------- Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo * 🤖 Update Dependencies (#366) * Add Material Carousel (#363) * Add Carousel * Apply Spotless * add to components * Apply Spotless * Clean up landing screens, using Scaffold and list items. * Apply Spotless * Review comments --------- Co-authored-by: riggaroo * Basic menu examples (#371) * basic menu examples * Make DropdownMenuWithDetails toggle expanded on click * Apply Spotless * Remove unneeded dependencies * Remove unneeded imports --------- Co-authored-by: jakeroseman * Filter chip dropdown menu (#375) * Filter chip dropdown menu * Apply Spotless * Add example of date picker textfield opening picker dialog on click (#376) * Add example of date picker textfield opening picker dialog on click * Apply Spotless * Add auto advance pager snippets (#377) * Add auto advance pager snippets * Apply Spotless --------- Co-authored-by: jakeroseman * Tooltip component examples (#373) * Tooltip component examples * Apply Spotless * Addressing PR comments * use LaunchedEffect to fix tooltip bug * Apply Spotless * Updated content descriptions --------- Co-authored-by: jakeroseman * Add pull to refresh snippets (#378) * Add pull to refresh snippets * Apply Spotless * Remove LaunchedEffect workaround (#379) * Remove LaunchedEffect workaround for library bug * Apply Spotless * Changed single var to val --------- Co-authored-by: jakeroseman * Navigation drawer examples (#380) * Basic navigation drawer examples * Add previews * Fix merge issue * Apply Spotless * rearrange functions * Narrowing the examples to just the example with nested items * Apply Spotless * refactoring as dismissable drawer * Fixing imports * refactor, new region tags * Renaming functions * Apply Spotless * Add horizontal padding to the drawer content * Apply Spotless * Make drawer content scrollable to make it work on small screens / landscape --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Snippets for keyboard input (#368) * Add a sample code for Keyboard Shortcuts Helper * Add a sample code for keyboard actions * Fix the issue on casting a Context object into Activity * Snippet for animated sorted list with add/remove buttons. (#381) * Snippet for animated sorted list with add/remove buttons. * Apply Spotless * Simplify adding an item to displayedItems * Use ViewModel to correctly extract business logic from UI --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Add basic segmented button examples (#383) * Add basic segmented button examples * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Adding views snippets module with Generated Preview samples (#384) * Adding views snippets module with Generated Preview samples * fixup --------- Co-authored-by: Summers Pittman * Adding top bar multi selection examples (#387) * Adding top bar multi selection examples * Apply Spotless * Remember some vals --------- Co-authored-by: jakeroseman * Include AppScaffold in navigation Snippet (#385) * Animate image size on scroll (#390) * Add animate image size on scroll example * Add simple comments and rename some variables * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Add basic HTML text styling example (#389) * Add basic HTML text styling example * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * 🤖 Update Dependencies (#391) * 🤖 Update Dependencies * Update compileSdk to 35 --------- Co-authored-by: Jolanda Verhoef * add in predictive back snippets for NavHost and predictive back handler (#394) * add in predictive back snippets * Apply Spotless * add in basic predictivebackhandler composable example * Apply Spotless --------- Co-authored-by: trambui09 * Add region tags to auto advance pager examples (#398) * Init Wear Tiles snippets (#400) * Init Wear Tiles snippets * Add snippet markers * Add manifest snippet markers * Rename manifest snippet markers * Create misc module, add broadcast receiver snippets (#397) * Create misc module, add broadcast receiver snippets * Apply Spotless * Add live search with FilterTextView example (#402) * Add live search with FilterTextView example * Apply Spotless --------- Co-authored-by: jakeroseman * Add single option radio button example (#401) * Add single option radio button example * Apply Spotless * Apply Spotless --------- Co-authored-by: jakeroseman * update to use type safe routes (#399) * Migrated relevant MotionCompose snippets into snippets (#411) * Migrated relevant MotionCompose snippets into snippets * Apply Spotless --------- Co-authored-by: riggaroo * Moving location permissions snippets to repo (#413) * Moving location permissions snippets to repo * Apply Spotless * rationalize class names * Fixing region tags --------- Co-authored-by: jakeroseman * Use VerticalDivider in IntrinsicSnippets (#369) Co-authored-by: Rebecca Franks * Add an example of Shared elements that are seekable using SeekableTransitionState (#416) * Added seekable predictive back (redoing commit) * Added seekable predictive back (redoing commit) * spotless * Delete SeekableSharedElement.kt * Apply Spotless * Add enableOnBackInvokedCallback * Add comments and fix custom seeking predictive back example. * Apply Spotless --------- Co-authored-by: riggaroo * 🤖 Update Dependencies (#427) * Adding SearchBar examples (#408) * Adding SearchBar examples * Apply Spotless * Add search bar examples to top compose examples * Add content descriptions * Delete shared/build/generated/res/pngs/debug/drawable-anydpi-v24/ic_launcher_foreground.xml * remove errant build files from branch * Apply Spotless --------- Co-authored-by: jakeroseman Co-authored-by: Rebecca Franks * Add Swipe to reveal examples (#412) * Add Swipe to reveal examples * Apply Spotless * Adding swipe to dismiss examples to the top compose examples. * Tidy up merge conflict errors --------- Co-authored-by: jakeroseman * Add example usage of keyframesWithSplines (#430) * Add example of keyframesWithSplines * Apply Spotless * PR Review comments. * PR Review comments. * Apply Spotless --------- Co-authored-by: riggaroo * Update Advanced Focus Snippets to remove Deprecations (#432) Co-authored-by: Rob Orgiu --------- Co-authored-by: Rebecca Franks Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef Co-authored-by: N. Shimizu Co-authored-by: Hoyt Summers Pittman Co-authored-by: Summers Pittman Co-authored-by: Chiara Chiappini Co-authored-by: Tram Bui <62119967+trambui09@users.noreply.github.com> Co-authored-by: trambui09 Co-authored-by: Michael Stillwell Co-authored-by: David Mendoza Co-authored-by: Roberto Orgiu Co-authored-by: Rob Orgiu From f96a12b6f3acfe74e9967537bc577decba750a28 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Wed, 15 Jan 2025 10:41:40 +0000 Subject: [PATCH 58/59] =?UTF-8?q?=F0=9F=A4=96=20Sync=20main=20to=20latest?= =?UTF-8?q?=20(#435)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added two snippets for showcasing how to do Masking and Clipping in Compose (#362) * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Apply Spotless * Fix email input snippet * Migrate to use BasicSecureTextField. * Updated to use BasicSecureTextField. * Added clipping and faded edge examples * Apply Spotless * Clean up snippet * Clean up snippet --------- Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo * 🤖 Update Dependencies (#366) * Add Material Carousel (#363) * Add Carousel * Apply Spotless * add to components * Apply Spotless * Clean up landing screens, using Scaffold and list items. * Apply Spotless * Review comments --------- Co-authored-by: riggaroo * Basic menu examples (#371) * basic menu examples * Make DropdownMenuWithDetails toggle expanded on click * Apply Spotless * Remove unneeded dependencies * Remove unneeded imports --------- Co-authored-by: jakeroseman * Filter chip dropdown menu (#375) * Filter chip dropdown menu * Apply Spotless * Add example of date picker textfield opening picker dialog on click (#376) * Add example of date picker textfield opening picker dialog on click * Apply Spotless * Add auto advance pager snippets (#377) * Add auto advance pager snippets * Apply Spotless --------- Co-authored-by: jakeroseman * Tooltip component examples (#373) * Tooltip component examples * Apply Spotless * Addressing PR comments * use LaunchedEffect to fix tooltip bug * Apply Spotless * Updated content descriptions --------- Co-authored-by: jakeroseman * Add pull to refresh snippets (#378) * Add pull to refresh snippets * Apply Spotless * Remove LaunchedEffect workaround (#379) * Remove LaunchedEffect workaround for library bug * Apply Spotless * Changed single var to val --------- Co-authored-by: jakeroseman * Navigation drawer examples (#380) * Basic navigation drawer examples * Add previews * Fix merge issue * Apply Spotless * rearrange functions * Narrowing the examples to just the example with nested items * Apply Spotless * refactoring as dismissable drawer * Fixing imports * refactor, new region tags * Renaming functions * Apply Spotless * Add horizontal padding to the drawer content * Apply Spotless * Make drawer content scrollable to make it work on small screens / landscape --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Snippets for keyboard input (#368) * Add a sample code for Keyboard Shortcuts Helper * Add a sample code for keyboard actions * Fix the issue on casting a Context object into Activity * Snippet for animated sorted list with add/remove buttons. (#381) * Snippet for animated sorted list with add/remove buttons. * Apply Spotless * Simplify adding an item to displayedItems * Use ViewModel to correctly extract business logic from UI --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Add basic segmented button examples (#383) * Add basic segmented button examples * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Adding views snippets module with Generated Preview samples (#384) * Adding views snippets module with Generated Preview samples * fixup --------- Co-authored-by: Summers Pittman * Adding top bar multi selection examples (#387) * Adding top bar multi selection examples * Apply Spotless * Remember some vals --------- Co-authored-by: jakeroseman * Include AppScaffold in navigation Snippet (#385) * Animate image size on scroll (#390) * Add animate image size on scroll example * Add simple comments and rename some variables * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Add basic HTML text styling example (#389) * Add basic HTML text styling example * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * 🤖 Update Dependencies (#391) * 🤖 Update Dependencies * Update compileSdk to 35 --------- Co-authored-by: Jolanda Verhoef * add in predictive back snippets for NavHost and predictive back handler (#394) * add in predictive back snippets * Apply Spotless * add in basic predictivebackhandler composable example * Apply Spotless --------- Co-authored-by: trambui09 * Add region tags to auto advance pager examples (#398) * Init Wear Tiles snippets (#400) * Init Wear Tiles snippets * Add snippet markers * Add manifest snippet markers * Rename manifest snippet markers * Create misc module, add broadcast receiver snippets (#397) * Create misc module, add broadcast receiver snippets * Apply Spotless * Add live search with FilterTextView example (#402) * Add live search with FilterTextView example * Apply Spotless --------- Co-authored-by: jakeroseman * Add single option radio button example (#401) * Add single option radio button example * Apply Spotless * Apply Spotless --------- Co-authored-by: jakeroseman * update to use type safe routes (#399) * Migrated relevant MotionCompose snippets into snippets (#411) * Migrated relevant MotionCompose snippets into snippets * Apply Spotless --------- Co-authored-by: riggaroo * Moving location permissions snippets to repo (#413) * Moving location permissions snippets to repo * Apply Spotless * rationalize class names * Fixing region tags --------- Co-authored-by: jakeroseman * Use VerticalDivider in IntrinsicSnippets (#369) Co-authored-by: Rebecca Franks * Add an example of Shared elements that are seekable using SeekableTransitionState (#416) * Added seekable predictive back (redoing commit) * Added seekable predictive back (redoing commit) * spotless * Delete SeekableSharedElement.kt * Apply Spotless * Add enableOnBackInvokedCallback * Add comments and fix custom seeking predictive back example. * Apply Spotless --------- Co-authored-by: riggaroo * 🤖 Update Dependencies (#427) * Adding SearchBar examples (#408) * Adding SearchBar examples * Apply Spotless * Add search bar examples to top compose examples * Add content descriptions * Delete shared/build/generated/res/pngs/debug/drawable-anydpi-v24/ic_launcher_foreground.xml * remove errant build files from branch * Apply Spotless --------- Co-authored-by: jakeroseman Co-authored-by: Rebecca Franks * Add Swipe to reveal examples (#412) * Add Swipe to reveal examples * Apply Spotless * Adding swipe to dismiss examples to the top compose examples. * Tidy up merge conflict errors --------- Co-authored-by: jakeroseman * Add example usage of keyframesWithSplines (#430) * Add example of keyframesWithSplines * Apply Spotless * PR Review comments. * PR Review comments. * Apply Spotless --------- Co-authored-by: riggaroo * Update Advanced Focus Snippets to remove Deprecations (#432) Co-authored-by: Rob Orgiu * Replaced deprecated WindowHeightSizeClass with isHeightAtLeastBreakpoint(). (#419) * Replaced deprecated WindowHeightSizeClass with isHeightAtLeastBreakpoint. * Apply Spotless * Replaced deprecated WindowHeightSizeClass with isHeightAtLeastBreakpoint. * Updated androidx-window to 1.4.0-alpha05. --------- Co-authored-by: JonEckenrode --------- Co-authored-by: Rebecca Franks Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef Co-authored-by: N. Shimizu Co-authored-by: Hoyt Summers Pittman Co-authored-by: Summers Pittman Co-authored-by: Chiara Chiappini Co-authored-by: Tram Bui <62119967+trambui09@users.noreply.github.com> Co-authored-by: trambui09 Co-authored-by: Michael Stillwell Co-authored-by: David Mendoza Co-authored-by: Roberto Orgiu Co-authored-by: Rob Orgiu Co-authored-by: Jon Eckenrode <112520815+JonEckenrode@users.noreply.github.com> Co-authored-by: JonEckenrode From 38f18c8fb0565d50babc7120adf5f3704ac7ada8 Mon Sep 17 00:00:00 2001 From: compose-devrel-github-bot <118755852+compose-devrel-github-bot@users.noreply.github.com> Date: Mon, 17 Feb 2025 08:56:27 +0000 Subject: [PATCH 59/59] =?UTF-8?q?=F0=9F=A4=96=20Sync=20main=20to=20latest?= =?UTF-8?q?=20(#442)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Added two snippets for showcasing how to do Masking and Clipping in Compose (#362) * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Code snippet for Compose doc at https://developer.android.com/quick-guides/content/animate-text?hl=en (Animate text character-by-character). This commit slightly modifies (makes buildable in our repo) the existing code on the current DAC page. That code, in turn, was BNR's simplified version of Xoogler astamato's Medium article at https://medium.com/androiddevelopers/effective-state-management-for-textfield-in-compose-d6e5b070fbe5 * Apply Spotless * Fix email input snippet * Migrate to use BasicSecureTextField. * Updated to use BasicSecureTextField. * Added clipping and faded edge examples * Apply Spotless * Clean up snippet * Clean up snippet --------- Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo * 🤖 Update Dependencies (#366) * Add Material Carousel (#363) * Add Carousel * Apply Spotless * add to components * Apply Spotless * Clean up landing screens, using Scaffold and list items. * Apply Spotless * Review comments --------- Co-authored-by: riggaroo * Basic menu examples (#371) * basic menu examples * Make DropdownMenuWithDetails toggle expanded on click * Apply Spotless * Remove unneeded dependencies * Remove unneeded imports --------- Co-authored-by: jakeroseman * Filter chip dropdown menu (#375) * Filter chip dropdown menu * Apply Spotless * Add example of date picker textfield opening picker dialog on click (#376) * Add example of date picker textfield opening picker dialog on click * Apply Spotless * Add auto advance pager snippets (#377) * Add auto advance pager snippets * Apply Spotless --------- Co-authored-by: jakeroseman * Tooltip component examples (#373) * Tooltip component examples * Apply Spotless * Addressing PR comments * use LaunchedEffect to fix tooltip bug * Apply Spotless * Updated content descriptions --------- Co-authored-by: jakeroseman * Add pull to refresh snippets (#378) * Add pull to refresh snippets * Apply Spotless * Remove LaunchedEffect workaround (#379) * Remove LaunchedEffect workaround for library bug * Apply Spotless * Changed single var to val --------- Co-authored-by: jakeroseman * Navigation drawer examples (#380) * Basic navigation drawer examples * Add previews * Fix merge issue * Apply Spotless * rearrange functions * Narrowing the examples to just the example with nested items * Apply Spotless * refactoring as dismissable drawer * Fixing imports * refactor, new region tags * Renaming functions * Apply Spotless * Add horizontal padding to the drawer content * Apply Spotless * Make drawer content scrollable to make it work on small screens / landscape --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Snippets for keyboard input (#368) * Add a sample code for Keyboard Shortcuts Helper * Add a sample code for keyboard actions * Fix the issue on casting a Context object into Activity * Snippet for animated sorted list with add/remove buttons. (#381) * Snippet for animated sorted list with add/remove buttons. * Apply Spotless * Simplify adding an item to displayedItems * Use ViewModel to correctly extract business logic from UI --------- Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef * Add basic segmented button examples (#383) * Add basic segmented button examples * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Adding views snippets module with Generated Preview samples (#384) * Adding views snippets module with Generated Preview samples * fixup --------- Co-authored-by: Summers Pittman * Adding top bar multi selection examples (#387) * Adding top bar multi selection examples * Apply Spotless * Remember some vals --------- Co-authored-by: jakeroseman * Include AppScaffold in navigation Snippet (#385) * Animate image size on scroll (#390) * Add animate image size on scroll example * Add simple comments and rename some variables * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * Add basic HTML text styling example (#389) * Add basic HTML text styling example * Apply Spotless * Add region tags --------- Co-authored-by: jakeroseman * 🤖 Update Dependencies (#391) * 🤖 Update Dependencies * Update compileSdk to 35 --------- Co-authored-by: Jolanda Verhoef * add in predictive back snippets for NavHost and predictive back handler (#394) * add in predictive back snippets * Apply Spotless * add in basic predictivebackhandler composable example * Apply Spotless --------- Co-authored-by: trambui09 * Add region tags to auto advance pager examples (#398) * Init Wear Tiles snippets (#400) * Init Wear Tiles snippets * Add snippet markers * Add manifest snippet markers * Rename manifest snippet markers * Create misc module, add broadcast receiver snippets (#397) * Create misc module, add broadcast receiver snippets * Apply Spotless * Add live search with FilterTextView example (#402) * Add live search with FilterTextView example * Apply Spotless --------- Co-authored-by: jakeroseman * Add single option radio button example (#401) * Add single option radio button example * Apply Spotless * Apply Spotless --------- Co-authored-by: jakeroseman * update to use type safe routes (#399) * Migrated relevant MotionCompose snippets into snippets (#411) * Migrated relevant MotionCompose snippets into snippets * Apply Spotless --------- Co-authored-by: riggaroo * Moving location permissions snippets to repo (#413) * Moving location permissions snippets to repo * Apply Spotless * rationalize class names * Fixing region tags --------- Co-authored-by: jakeroseman * Use VerticalDivider in IntrinsicSnippets (#369) Co-authored-by: Rebecca Franks * Add an example of Shared elements that are seekable using SeekableTransitionState (#416) * Added seekable predictive back (redoing commit) * Added seekable predictive back (redoing commit) * spotless * Delete SeekableSharedElement.kt * Apply Spotless * Add enableOnBackInvokedCallback * Add comments and fix custom seeking predictive back example. * Apply Spotless --------- Co-authored-by: riggaroo * 🤖 Update Dependencies (#427) * Adding SearchBar examples (#408) * Adding SearchBar examples * Apply Spotless * Add search bar examples to top compose examples * Add content descriptions * Delete shared/build/generated/res/pngs/debug/drawable-anydpi-v24/ic_launcher_foreground.xml * remove errant build files from branch * Apply Spotless --------- Co-authored-by: jakeroseman Co-authored-by: Rebecca Franks * Add Swipe to reveal examples (#412) * Add Swipe to reveal examples * Apply Spotless * Adding swipe to dismiss examples to the top compose examples. * Tidy up merge conflict errors --------- Co-authored-by: jakeroseman * Add example usage of keyframesWithSplines (#430) * Add example of keyframesWithSplines * Apply Spotless * PR Review comments. * PR Review comments. * Apply Spotless --------- Co-authored-by: riggaroo * Update Advanced Focus Snippets to remove Deprecations (#432) Co-authored-by: Rob Orgiu * Replaced deprecated WindowHeightSizeClass with isHeightAtLeastBreakpoint(). (#419) * Replaced deprecated WindowHeightSizeClass with isHeightAtLeastBreakpoint. * Apply Spotless * Replaced deprecated WindowHeightSizeClass with isHeightAtLeastBreakpoint. * Updated androidx-window to 1.4.0-alpha05. --------- Co-authored-by: JonEckenrode * 🤖 Update Dependencies (#440) * 🤖 Update Dependencies * Update Gradle wrapper properties * Update to remove casting * Apply Spotless --------- Co-authored-by: Meghan Co-authored-by: MagicalMeghan <46006059+MagicalMeghan@users.noreply.github.com> * Update M3SupportScaffoldSnippet (#441) * Update M3SupportScaffoldSnippet * Apply Spotless * 🤖 Update Dependencies (#446) * Downgrade Tiles snippets to use stable versions (#448) * update adaptive layouts samples to navigable scaffolds (#449) * update adaptive layouts samples to navigable scaffolds * Apply Spotless * change back the region tags * fix the region tags issues * change the file name back to restore the region tags * change the list-detail pane file name back * Revert "update adaptive layouts samples to navigable scaffolds (#449)" (#450) This reverts commit 724b5e6c7a877493a197d2434c92a63bbdd0c849. --------- Co-authored-by: Rebecca Franks Co-authored-by: dmail Co-authored-by: thedmail Co-authored-by: riggaroo Co-authored-by: Jake Roseman <122034773+jakeroseman@users.noreply.github.com> Co-authored-by: jakeroseman Co-authored-by: Jolanda Verhoef Co-authored-by: N. Shimizu Co-authored-by: Hoyt Summers Pittman Co-authored-by: Summers Pittman Co-authored-by: Chiara Chiappini Co-authored-by: Tram Bui <62119967+trambui09@users.noreply.github.com> Co-authored-by: trambui09 Co-authored-by: Michael Stillwell Co-authored-by: David Mendoza Co-authored-by: Roberto Orgiu Co-authored-by: Rob Orgiu Co-authored-by: Jon Eckenrode <112520815+JonEckenrode@users.noreply.github.com> Co-authored-by: JonEckenrode Co-authored-by: Meghan Co-authored-by: MagicalMeghan <46006059+MagicalMeghan@users.noreply.github.com> Co-authored-by: Ash <83780687+ashnohe@users.noreply.github.com>