我是android和jetpack组成的初学者,我想用Material 3构建应用程序,但Material 3仅适用于android 12及以上。这是否意味着该应用程序将无法在旧的安卓设备上运行,或者它将自动切换到Material 2组件?
Material3没有这个限制。它也适用于android<12.
动态颜色在Android 12 (API级别31)及以上可用。
如果动态颜色可用,则可以设置动态ColorScheme
。如果没有,您应该退回到使用自定义的浅色或深色ColorScheme
。
类似:
fun supportsDynamic() : Boolean = Build.VERSION.SDK_INT >= Build.VERSION_CODES.S
@Composable
fun M3Theme(content: @Composable() () -> Unit) {
val inDarkMode: Boolean = isSystemInDarkTheme()
val colors = if (supportsDynamic()) {
val context = LocalContext.current
if (inDarkMode) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context)
} else {
if (inDarkMode) DarkColorScheme else LightColorScheme
}
androidx.compose.material3.MaterialTheme(
colorScheme = colors,
content = content
)
}