news 2026/9/8 23:17:04

5分钟给Compose应用加玻璃拟态背景模糊:Haze完整入门指南

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
5分钟给Compose应用加玻璃拟态背景模糊:Haze完整入门指南

5分钟给Compose应用加玻璃拟态背景模糊:Haze完整入门指南

【免费下载链接】hazeBackground blurring for Compose Multiplatform / Jetpack Compose项目地址: https://gitcode.com/gh_mirrors/ha/haze

想让 Compose 应用的导航栏、悬浮卡片拥有那种"磨砂玻璃"质感,手搓 RenderEffect 和离屏画布非常折腾。Haze 正是为此而生的 Compose 背景模糊库:基于hazeSourcehazeBlur两个 Modifier 即可得到硬件加速的模糊、着色与预设材料样式,Android、iOS、桌面和 Web 全平台跑同一套代码。

三步把 Haze 接入 Compose 项目

v2 采用模块化设计:haze提供基础设施,模糊效果放在haze-blur,预设材料样式放在haze-materials。只引入你用得到的模块即可:

dependencies { implementation("dev.chrisbanes.haze:haze:<version>") implementation("dev.chrisbanes.haze:haze-blur:<version>") implementation("dev.chrisbanes.haze:haze-blur-materials:<version>") }

接下来只需认识两个角色:

  • hazeSource:把某块内容"登记"为模糊来源,相当于告诉 Haze"从这里取背景"。
  • hazeBlur:在另一块内容上消费来源,应用模糊。

两者通过rememberHazeState()返回的HazeState关联。以"背景图上盖一层全模糊"为例:

val hazeState = rememberHazeState() // 模糊状态的桥梁 Box { Image(painter, null, Modifier.hazeSource(hazeState)) // 背景:注册为模糊源 Box( modifier = Modifier.matchParentSize().hazeBlur( input = HazeInput.Sources(hazeState), // 从上面的源取样 style = HazeBlurStyle { blurRadius(20.dp) }, ), ) }

跑起来后,前景 Box 就是标准磨砂玻璃效果。这套"源 + 效果"的写法同样适用于滚动列表下的导航栏:把列表容器标成hazeSource,顶部栏用hazeBlur消费,滚动内容就会自然地从顶栏下方渗上来。

换色与调参:定制 HazeBlurStyle

默认只有模糊,实际设计往往还要底色和色调。HazeBlurStyle是一个 DSL,逐项声明即可:

val cardStyle = HazeBlurStyle { backgroundColor(Color.Black) // 模糊层的底色 colorEffects(listOf(HazeColorEffect.tint(Color.White.copy(alpha = 0.3f)))) // 整体着色 blurRadius(24.dp) // 半径越大,背景细节越糊 }

cardStyle传给hazeBlur(style = cardStyle),一张带雾面质感的悬浮卡片就完成了。需要更细的控制(噪声、进度式模糊等),可参考 haze-blur/ 模块源码与 docs/ 下的用法文档。

切换预设材料样式:一键对齐系统风格

如果目标是和原生 UI 保持一致,不必自己调参。haze-blur-materials内置了三套取自系统设计的材料样式,直接作为style使用:

Modifier.hazeBlur( input = HazeInput.Sources(hazeState), style = CupertinoMaterials.thin(), // iOS 风格的半透明材料 )

  • CupertinoultraThin/thin/regular/thick):对齐 Apple 平台的透明度梯度,深浅色主题自适应。
  • FluentacrylicDefaultmica等):对齐 Windows 的 Acrylic / Mica 材质。

除了模糊,v2 还提供haze-glass模块实现折射感的玻璃效果(类似 macOS 控制中心),感兴趣可以看 haze-glass/ 与截图测试里的信用卡示例。

性能调优:让 Haze 自动缩放输入

全分辨率实时模糊在小屏幕上压力不小。Haze 提供自适应输入缩放:根据渲染节奏把采样分辨率降到合适的档位,再放大显示,模糊质量几乎无感,功耗和帧率显著改善。效果对比可参考 docs/glass/performance.md 与下图:

实践中两条建议:

  1. 模糊源尽量小:只把真正需要被模糊的内容标成hazeSource,别把整页都包进去。
  2. 动画或滚动密集的场景用默认档位先跑,帧率吃紧时再调低缩放上限。

接下来看哪里

  • 官方文档:docs/,覆盖核心概念、迁移与进阶效果
  • 可运行示例:sample/,导航栏、卡片、对话框等场景都有对应代码
  • 完整 API 演进:haze/api/ 下的历史版本签名文件

上手路径建议:先用"源 + 效果"跑通一个导航栏场景 → 换成CupertinoMaterialsFluentMaterials对齐目标平台风格 → 最后打开输入缩放做性能回归。整个流程基本就是本文 5 分钟内容的复刻。

【免费下载链接】hazeBackground blurring for Compose Multiplatform / Jetpack Compose项目地址: https://gitcode.com/gh_mirrors/ha/haze

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/30 13:37:14

相关系数全解析:从皮尔逊到克莱姆V,实战选型与避坑指南

1. 项目概述&#xff1a;从“相关”到“系数”的实战跨越在数据分析和数学建模的世界里&#xff0c;“相关”这个词我们几乎天天挂在嘴边。比如&#xff0c;我们常说“销量和广告投入是相关的”、“气温和冰淇淋销量是相关的”。但作为一名建模老手&#xff0c;我深知这种模糊的…

作者头像 李华
网站建设 2026/8/30 15:40:23

从DeepSeek涨价看大模型API成本优化与本地部署策略

最近一段时间&#xff0c;很多在项目里接了大模型 API 的开发者&#xff0c;应该都看到了 DeepSeek 即将大幅调价的消息。第一反应大概率是“成本又要涨了”&#xff0c;但如果只把它当一条坏消息来看&#xff0c;很可能就错过了它真正想传递的信号。做在线服务时间久了会有一个…

作者头像 李华
网站建设 2026/8/30 16:45:10

OpenClaw 性能调优指南:定位 AI 助手响应慢并压降内存占用

OpenClaw 性能调优指南&#xff1a;定位 AI 助手响应慢并压降内存占用 【免费下载链接】openclaw Your own personal AI assistant. Any OS. Any Platform. The lobster way. &#x1f99e; 项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw OpenClaw 作为跨…

作者头像 李华
网站建设 2026/8/30 16:42:02

OpenClaw 性能优化实战指南:让你的个人 AI 助手快回一半

OpenClaw 性能优化实战指南&#xff1a;让你的个人 AI 助手快回一半 【免费下载链接】openclaw Your own personal AI assistant. Any OS. Any Platform. The lobster way. &#x1f99e; 项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw 用 OpenClaw 这类…

作者头像 李华
网站建设 2026/9/2 18:55:56

600W AC-DC电源设计实战:医疗与工业应用的关键问题解析

前阵子给一台医用超声设备做整机电源方案&#xff0c;主控板加探头前端一路算下来大概需要550W的持续功率&#xff0c;还要能扛住短时峰值负载。翻了一圈市面上的AC-DC电源&#xff0c;发现600W这个档位非常微妙——它比500W高一级&#xff0c;又能覆盖大部分中小型医疗和工业系…

作者头像 李华