建立視差捲動效果

視差捲動是一種技術,可讓背景內容和前景內容以不同速度捲動。您可以運用這項技術改善應用程式的 UI,在使用者捲動畫面時提供更動態的體驗。

結果

圖 1. 具有視差效果的捲動清單。

版本相容性

這項實作作業需要將專案 minSDK 設為 API 級別 21 以上。

依附元件

建立視差效果

如要實現視差效果,請將捲動可組合項的捲動值分數套用至需要視差效果的可組合項。下列程式碼片段會採用兩個巢狀視覺元素 (圖片和文字區塊),並以不同速度朝相同方向捲動這些元素:

@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),

        )
    }
}

程式碼重點

  • 建立自訂 layout 修飾符,調整可組合項目的捲動速率。
  • Image 的捲動速度比 Text 慢,因此當這兩個可組合函式以不同速度垂直平移時,就會產生視差效果。

包含本指南的集合

本指南是精選快速指南系列的一部分,涵蓋更廣泛的 Android 開發目標:

清單和格線可讓應用程式以賞心悅目的形式顯示集合,方便使用者瀏覽。
瞭解如何運用明亮吸睛的視覺元素,為 Android 應用程式打造美觀的外觀和風格。
文字是任何 UI 的核心元素。瞭解在應用程式中呈現文字的不同方式,提供令人愉悅的使用者體驗。

如有問題或想提供意見

前往常見問題頁面,瞭解快速指南或與我們聯絡,分享您的想法。