android Jetpack合成中的模糊

qqrboqgw  于 2022-11-27  发布在  Android
关注(0)|答案(4)|浏览(269)

如何在Jetpack Compose中模糊背景或创建模糊叠加?没有任何文档或资源涉及此主题。简单地说:我希望在Jetpack Compose中以本机方式实现类似this的功能

w8f9ii69

w8f9ii691#

这是a feature that has been requested(仅在适用于android 12及更高版本的Compose 1.1.0-alpha03中实现),您可能希望星星。
我们的想法是创建一个模糊修改器,如下所示:

Modifier.blur(radius = 16.dp)
kq0g1dla

kq0g1dla2#

Jetpack编写:1.1.0-alpha 03中,您可以用途:

Modifier.blur(30.dp)

但仅在Android 12及更高版本上受支持。在较旧的Android版本上使用此修饰符的尝试将被忽略。

参考:Modifier.blur

ifmq2ha2

ifmq2ha23#

对于API 31之前的版本,您仍然可以使用RenderScript(已弃用)或RenderScript Intrinsics Replacement Toolkit。对于第一种方法:

val bitmap = BitmapFactory.decodeResource(
    LocalContext.current.resources,
    R.drawable.your_image
)
val rs = RenderScript.create(LocalContext.current)
val bitmapAlloc = Allocation.createFromBitmap(rs, bitmap)
ScriptIntrinsicBlur.create(rs, bitmapAlloc.element).apply {
    setRadius(BLUR_RADIUS)
    setInput(bitmapAlloc)
    forEach(bitmapAlloc)
}
bitmapAlloc.copyTo(bitmap)
rs.destroy()

第二步,您必须将 renderscript-toolkit 模块添加到项目中(请查看此处),然后用途:

val bitmap = BitmapFactory.decodeResource(
    LocalContext.current.resources,
    R.drawable.your_image
).let { Toolkit.blur(it, BLUR_RADIUS) }

最后你可以这样显示模糊的位图:

Image(
    bitmap = bitmap.asImageBitmap(),
    "some description"
)
rslzwgfq

rslzwgfq4#

我找到了这个Jetpack Compose模糊过程库,它支持所有Android版本,希望它对你有用。
Jetpack Compose Cloudy - blur process library

相关问题