Skip to content

Instantly share code, notes, and snippets.

View fvilarino's full-sized avatar

Francesc Vilariño Güell fvilarino

View GitHub Profile
@fvilarino
fvilarino / shared_elem_list_text.kt
Last active April 21, 2024 19:28
Shared Elem - List Text
@Composable
fun SharedTransitionScope.ListScreen(
animatedVisibilityScope: AnimatedVisibilityScope,
onItemClick: (String) -> Unit,
modifier: Modifier = Modifier
) {
LazyColumn(
modifier = modifier,
verticalArrangement = Arrangement.spacedBy(8.dp),
contentPadding = PaddingValues(all = 16.dp),
@fvilarino
fvilarino / shared_elem_details_calling.kt
Created April 20, 2024 23:29
Shared Elem - Details Calling
composable(
route = "details/{url}"
) { backstackEntry ->
val encoded = backstackEntry.arguments?.getString("url") ?: error("No URL")
val url = URLDecoder.decode(encoded, "UTF-8")
DetailsScreen(
url = url,
animatedVisibilityScope = this@composable,
onClick = { navController.popBackStack() },
modifier = Modifier.fillMaxSize(),
@fvilarino
fvilarino / shared_elem_animated_details.kt
Created April 20, 2024 23:26
Share Elem - Animated Details
@Composable
// 1
fun SharedTransitionScope.DetailsScreen(
url: String,
// 2
animatedVisibilityScope: AnimatedVisibilityScope,
onClick: () -> Unit,
modifier: Modifier = Modifier,
) {
Column(
@fvilarino
fvilarino / shared_elem_list_calling.kt
Created April 20, 2024 22:55
Shared Elem - List Calling
composable(
route = "list"
) {
ListScreen(
// 1
animatedVisibilityScope = this@composable,
onItemClick = { item ->
val encoded = URLEncoder.encode(item, "UTF-8")
navController.navigate("details/$encoded")
},
@fvilarino
fvilarino / shared_elem_animated_list.kt
Last active April 21, 2024 19:27
Shared Elem - Animated List
@Composable
// 1
fun SharedTransitionScope.ListScreen(
// 2
animatedVisibilityScope: AnimatedVisibilityScope,
onItemClick: (String) -> Unit,
modifier: Modifier = Modifier
) {
LazyColumn(
modifier = modifier,
@fvilarino
fvilarino / shared_elem_layout_wrapper.kt
Created April 20, 2024 22:33
Shared Elem - Layout Wrapper
@Composable
fun Home(modifier: Modifier = Modifier) {
val navController = rememberNavController()
// 1
SharedTransitionLayout(
modifier = modifier,
) {
NavHost(
navController = navController,
startDestination = "list",
@fvilarino
fvilarino / shared_elem_toml.toml
Created April 20, 2024 22:22
Share Elem - Toml
[versions]
navigationCompose = "2.8.0-alpha07"
uiCompose = "1.7.0-alpha07"
animationCompose = "1.7.0-alpha07"
foundationCompose = "1.7.0-alpha07"
[libraries]
androidx-navigation-compose = { group = "androidx.navigation", name = "navigation-compose", version.ref = "navigationCompose" }
androidx-ui = { group = "androidx.compose.ui", name = "ui", version.ref = "uiCompose" }
androidx-animation = { group = "androidx.compose.animation", name = "animation", version.ref = "animationCompose" }
@fvilarino
fvilarino / shared_elem_navigation.kt
Last active April 20, 2024 22:36
Shared Elem - Navigation
@Composable
fun Home(modifier: Modifier = Modifier) {
val navController = rememberNavController()
NavHost(navController = navController, startDestination = "list", modifier = modifier) {
composable(
route = "list"
) {
ListScreen(
onItemClick = { item ->
val encoded = URLEncoder.encode(item, "UTF-8")
@fvilarino
fvilarino / shared_elem_baseline_details.kt
Created April 20, 2024 22:05
Shared Elem - Baseline Details
@Composable
fun DetailsScreen(
url: String,
onClick: () -> Unit,
modifier: Modifier = Modifier,
) {
Column(
modifier = modifier
.clickable(
interactionSource = remember { MutableInteractionSource() },
@fvilarino
fvilarino / shared_elem_baseline_list.kt
Last active April 21, 2024 19:26
Shared Elem - Baseline List
@Composable
fun ListScreen(
onItemClick: (String) -> Unit,
modifier: Modifier = Modifier
) {
LazyColumn(
modifier = modifier,
verticalArrangement = Arrangement.spacedBy(8.dp),
contentPadding = PaddingValues(all = 16.dp),
) {