一、概念
模糊+液态玻璃效果。
| rememberLayerBackdrop() | @Composable 创建状态。onDraw 的绘制会画到设置玻璃效果的组件背景上。 |
| layerBackdrop() | fun Modifier.layerBackdrop(backdrop: LayerBackdrop): Modifier 标记背景来源。 |
| drawBackdrop() | fun Modifier.drawBackdrop( 设置玻璃效果。底层绘制的顺序由低到高:onDrawBehind → onDrawBackdrop → onDrawSurface → drawContent → onDrawFront。 |
二、添加依赖
[versions]
composeBackdrop = "2.0.0-rc01"
[libraries]
compose-backdrop = { module = "io.github.kyant0:backdrop", version.ref = "composeBackdrop" }
三、简单使用
Box {
// 创建状态
val backdrop = rememberLayerBackdrop()
// 标记背景板
ScreenContent(Modifier.layerBackdrop(backdrop))
// 设置玻璃效果
FloatWidget(
modifier = Modifier.drawBackdrop(
backdrop = backdrop,
shape = { RoundedCornerShape(10.dp) },
effects = {
lens(
refractionHeight = 5.dp.toPx(), //折射范围
refractionAmount = 15.dp.toPx() //折射程度
)
}
)
)
}
四、高级效果 BackdropEffectScope
| lens() | fun BackdropEffectScope.lens( //折射范围(边缘向内的长度)。 //折射程度。 //边缘折射加强,默认关。 //边缘彩虹色散,默认关 透镜。 |
| blur() | fun BackdropEffectScope.blur( 模糊程度。 |
| opacity() | fun BackdropEffectScope.opacity(@FloatRange(from = 0.0, to = 1.0) alpha: Float) 边缘折射程度,默认1F,取值范围:0 ~ 1F。 |
| colorControls() | fun BackdropEffectScope.colorControls( 色彩调节。 |
| vibrancy() | fun BackdropEffectScope.vibrancy() 高饱和度效果(底层通过颜色滤镜实现)。 |
| colorFilter() | fun BackdropEffectScope.colorFilter(colorFilter: ColorFilter) 颜色滤镜。 |
Modifier.drawBackdrop(
backdrop = backdrop,
shape = { RoundedCornerShape(10.dp) },
effects = {
vibrancy() //增加饱和度
opacity(0.9F) // 边缘折射程度,默认1F,范围:0~1F
blur(1.dp.toPx()) // 模糊程度
lens(
refractionHeight = 5.dp.toPx(), //折射范围(边缘向内的长度)
refractionAmount = 15.dp.toPx(), //折射程度
depthEffect = true, //边缘折射加强,默认关
chromaticAberration = true //边缘彩虹色散,默认关
)
}
)

731

被折叠的 条评论
为什么被折叠?



