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

如何在Android Jetpack Compose中实现玻璃态背景效果?

在Jetpack Compose中实现仅背景模糊的玻璃态效果

要实现仅背景模糊、上层内容清晰的磨砂玻璃效果,核心是使用BackdropFilter配合半透明底色,它能精准模糊组件下方的内容,不会影响自身的子元素。

具体实现代码

Box(
    modifier = Modifier.fillMaxSize()
) {
    // 底层背景(示例为图片,可替换为任意布局)
    Image(
        painter = painterResource(id = R.drawable.background),
        contentDescription = null,
        modifier = Modifier.fillMaxSize(),
        contentScale = ContentScale.Crop
    )

    // 玻璃态容器
    Box(
        modifier = Modifier
            .fillMaxWidth()
            .height(200.dp)
            .padding(16.dp)
            // 半透明底色模拟玻璃通透感,可按需调整颜色和透明度
            .background(Color.White.copy(alpha = 0.2f))
            // 应用背景模糊,radius控制模糊程度(建议4dp-16dp)
            .backdropFilter(BlurEffect(radius = 8.dp))
            // 可选:添加圆角增强视觉效果
            .clip(RoundedCornerShape(12.dp))
            // 可选:添加阴影提升立体感
            .shadow(elevation = 4.dp, shape = RoundedCornerShape(12.dp))
    ) {
        // 上层清晰内容
        Text(
            text = "play music",
            modifier = Modifier.align(Alignment.Center),
            fontSize = 24.sp,
            fontWeight = FontWeight.Bold,
            color = Color.Black
        )
    }
}

关键说明

  • BackdropFilter vs Modifier.blur():前者仅模糊组件后方的内容,不会影响子元素;后者会模糊整个组件(包括子元素),这是实现需求的核心区别。
  • 半透明底色:单纯模糊会显得单薄,低透明度的底色能还原真实磨砂玻璃的质感,可根据UI风格调整颜色和alpha值。
  • 性能注意:模糊半径过大或大量使用BackdropFilter会增加性能消耗,建议控制模糊半径在合理范围,且避免在滚动列表中频繁使用。

内容的提问来源于stack exchange,提问作者hefli ooki

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 07:52:47