diff --git a/compose/snippets/src/main/java/com/example/compose/snippets/images/ParallaxEffect.kt b/compose/snippets/src/main/java/com/example/compose/snippets/images/ParallaxEffect.kt
new file mode 100644
index 000000000..3f5fd2527
--- /dev/null
+++ b/compose/snippets/src/main/java/com/example/compose/snippets/images/ParallaxEffect.kt
@@ -0,0 +1,74 @@
+/*
+ * 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.images
+
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.ScrollState
+import androidx.compose.foundation.background
+import androidx.compose.foundation.layout.Column
+import androidx.compose.foundation.layout.fillMaxWidth
+import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.rememberScrollState
+import androidx.compose.foundation.verticalScroll
+import androidx.compose.material3.Text
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.Modifier
+import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.layout.ContentScale
+import androidx.compose.ui.layout.layout
+import androidx.compose.ui.res.painterResource
+import androidx.compose.ui.res.stringResource
+import androidx.compose.ui.unit.dp
+import com.example.compose.snippets.R
+
+// [START android_compose_images_parallax]
+@Composable
+fun ParallaxEffect() {
+ fun Modifier.parallaxLayoutModifier(scrollState: ScrollState, rate: Int) =
+ layout { measurable, constraints ->
+ val placeable = measurable.measure(constraints)
+ val height = if (rate > 0) scrollState.value / rate else scrollState.value
+ layout(placeable.width, placeable.height) {
+ placeable.place(0, height)
+ }
+ }
+
+ val scrollState = rememberScrollState()
+ Column(
+ modifier = Modifier
+ .fillMaxWidth()
+ .verticalScroll(scrollState),
+ ) {
+
+ Image(
+ painterResource(id = R.drawable.cupcake),
+ contentDescription = "Android logo",
+ contentScale = ContentScale.Fit,
+ // Reduce scrolling rate by half.
+ modifier = Modifier.parallaxLayoutModifier(scrollState, 2)
+ )
+
+ Text(
+ text = stringResource(R.string.detail_placeholder),
+ modifier = Modifier
+ .background(Color.White)
+ .padding(horizontal = 8.dp),
+
+ )
+ }
+}
+// [END android_compose_images_parallax]
diff --git a/compose/snippets/src/main/res/values-es/strings.xml b/compose/snippets/src/main/res/values-es/strings.xml
index cd1e2c96c..3ba327f49 100644
--- a/compose/snippets/src/main/res/values-es/strings.xml
+++ b/compose/snippets/src/main/res/values-es/strings.xml
@@ -52,4 +52,5 @@
Favoritos
Compras
Perfil
+ Esto es sólo un texto de marcador de posición.
\ No newline at end of file
diff --git a/compose/snippets/src/main/res/values/strings.xml b/compose/snippets/src/main/res/values/strings.xml
index 9c693cafe..faf8fd472 100644
--- a/compose/snippets/src/main/res/values/strings.xml
+++ b/compose/snippets/src/main/res/values/strings.xml
@@ -52,4 +52,5 @@
Favorites
Shopping
Profile
+ This is just a placeholder.
\ No newline at end of file