You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jetpack Compose应用中获取安卓系统设置APP使用的动态背景色?

如何在Jetpack Compose应用中获取安卓系统设置APP使用的动态背景色?

我太懂你要找的这个颜色了!就是系统设置APP里的那个动态背景——尤其是深色主题下,它比Compose默认的Background、Surface色要稍微亮一丢丢,而且确实不在Compose自带的Dynamic Color Scheme里,一开始找起来真的挺懵的对吧?

你之前尝试用android.R.color.system_surface_dim_dark直接拿颜色,结果不对,其实问题出在:系统设置APP根本不是直接用这个颜色ID的,它是通过系统主题属性来引用的,直接取颜色ID会跳过动态色的适配逻辑,所以拿到的颜色和设置APP里的不一样。

给你说个正确的姿势:

  • 系统设置APP里的这个背景色,对应的是系统主题属性?android:attr/systemSurfaceDim(深色模式下系统会自动映射到对应的动态暗色值)
  • 在Compose里,我们需要通过上下文的主题来解析这个属性,而不是直接调用colorResource

直接上代码,复制就能用:

import androidx.compose.ui.graphics.Color
import androidx.compose.ui.platform.LocalContext
import android.content.Context
import android.util.TypedValue

// 封装成工具函数
fun getSystemSettingsBgColor(context: Context): Color {
    val typedValue = TypedValue()
    // 从系统主题中解析systemSurfaceDim属性
    context.theme.resolveAttribute(android.R.attr.systemSurfaceDim, typedValue, true)
    return Color(typedValue.data)
}

// 在你的Composable里使用
@Composable
fun SettingsStyleScreen() {
    val context = LocalContext.current
    val settingsBgColor = getSystemSettingsBgColor(context)
    
    // 用这个颜色当背景
    Box(modifier = Modifier.fillMaxSize().background(settingsBgColor)) {
        // 这里放你的界面内容
    }
}

另外如果要兼容API 35以下的设备,可以加个版本判断, fallback到Compose Material3里的surfaceDim颜色,毕竟这个属性是API 35才新增的:

fun getSystemSettingsBgColor(context: Context): Color {
    return if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.UPSIDE_DOWN_CAKE) {
        val typedValue = TypedValue()
        context.theme.resolveAttribute(android.R.attr.systemSurfaceDim, typedValue, true)
        Color(typedValue.data)
    } else {
        // 低版本用Material3的surfaceDim近似替代
        androidx.compose.material3.MaterialTheme.colorScheme.surfaceDim
    }
}

这样拿到的颜色就和系统设置APP里的动态背景色完全一致啦,会跟着你的系统动态色主题(比如壁纸调色)自动变化~

备注:内容来源于stack exchange,提问作者Lexip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 13:32:58