Jetpack Compose 中的模糊

Yan*_*ick 6 android android-jetpack-compose

如何在 Jetpack Compose 中模糊背景或创建模糊叠加?没有任何关于此主题的文档或资源。简单地说:我在寻找实现像这样在Jetpack的撰写本身

Cod*_*oet 15

这是一项已被请求的功能,您可能希望为其加注星标。
这个想法是创建一个模糊修改器,看起来像这样:

Modifier.blur(radius = 16.dp, dynamic = true)
Run Code Online (Sandbox Code Playgroud)

  • 不适用于下面的可组合项,因此无法创建模糊叠加。它仅允许使用应用的修改器模糊可组合项内的内容。 (24认同)
  • 仅适用于 Android 12+ (10认同)

Orl*_*uez 13

Jetpack Compose :1.1.0-alpha03 中,您可以使用:

Modifier.blur(30.dp)
Run Code Online (Sandbox Code Playgroud)

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

参考Modifier.blur


Ste*_*gin 7

对于 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()
Run Code Online (Sandbox Code Playgroud)

对于第二个,您必须将renderscript-toolkit模块添加到您的项目中(查看此处),然后使用:

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

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

Image(
    bitmap = bitmap.asImageBitmap(),
    "some description"
)
Run Code Online (Sandbox Code Playgroud)


x3r*_*ode 6

https://github.com/x3rocode/xblur-compose/tree/main

我知道你想要什么。

我做了简单的实时合成模糊。
尝试这个。
图片

模糊

  • 虽然此链接可以回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接的答案可能会变得无效。- [来自评论](/review/late-answers/33570772) (7认同)
  • 值得一提的是,该解决方案依赖于 Android 图形着色语言 (AGSL),该语言是在 Android 13(或更具体地说是 API 33)中引入的。https://developer.android.com/develop/ui/views/graphics/agsl (2认同)

Orl*_*uez 5

我找到了这个Jetpack Compose模糊处理库,它支持所有Android版本。我希望这个对你有用。

Jetpack Compose Cloudy - 模糊处理库