Jetpack Compose

使用 Jetpack Compose 實作流暢動畫與 Material 3 動態配色

1 min read

在現代 Android 開發中,Jetpack Compose 徹底改變了我們構建宣告式 UI 的思維方式。搭配 Material 3 (Material You),我們能輕鬆打造兼具原生美感與個人化色彩的應用程式。

什麼是 Dynamic Color?

從 Android 12(API 31)開始引入的動態配色(Dynamic Color),能根據使用者設定的手機桌布自動提取主要色系,並衍生出協調的色調調色盤(Tonal Palettes)。

@Composable
fun MyAppTheme(
    darkTheme: Boolean = isSystemInDarkTheme(),
    dynamicColor: Boolean = true,
    content: @Composable () -> Unit
) {
    val colorScheme = when {
        dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
            val context = LocalContext.current
            if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
        }
        darkTheme -> DarkColorScheme
        else -> LightColorScheme
    }

    MaterialTheme(
        colorScheme = colorScheme,
        typography = Typography,
        content = content
    )
}

流暢的過渡動畫:AnimatedVisibility

Compose 的動畫 API 非常直覺,例如展開或收合列表項目的微互動:

AnimatedVisibility(
    visible = isExpanded,
    enter = fadeIn() + expandVertically(),
    exit = fadeOut() + shrinkVertically()
) {
    CardContent(details)
}

結語

保持介面的簡潔與視覺回饋的流暢度,是提升 App 質感的關鍵。善用 Compose 的聲明式特性,能大幅降低管理 UI 動畫狀態的複雜度。