parent
13d2f522e2
commit
6b36fe1963
@ -2,8 +2,11 @@ package de.mm20.launcher2.ui.launcher.helper
|
|||||||
|
|
||||||
import android.app.Activity
|
import android.app.Activity
|
||||||
import android.view.WindowManager
|
import android.view.WindowManager
|
||||||
|
import androidx.compose.animation.core.Animatable
|
||||||
|
import androidx.compose.animation.core.VectorConverter
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.LaunchedEffect
|
import androidx.compose.runtime.LaunchedEffect
|
||||||
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
import androidx.compose.ui.platform.LocalDensity
|
import androidx.compose.ui.platform.LocalDensity
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
@ -11,19 +14,28 @@ import de.mm20.launcher2.ktx.isAtLeastApiLevel
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun WallpaperBlur(blurRadius: () -> Int) {
|
fun WallpaperBlur(blurRadius: () -> Int) {
|
||||||
|
if (!isAtLeastApiLevel(31)) return
|
||||||
val context = LocalContext.current
|
val context = LocalContext.current
|
||||||
val density = LocalDensity.current
|
val density = LocalDensity.current
|
||||||
|
|
||||||
val radius = blurRadius()
|
val radius = blurRadius()
|
||||||
|
val animatable = remember { Animatable(radius, Int.VectorConverter) }
|
||||||
LaunchedEffect(radius) {
|
LaunchedEffect(radius) {
|
||||||
if (!isAtLeastApiLevel(31)) return@LaunchedEffect
|
animatable.animateTo(with(density) { radius.dp.toPx().toInt() }) {
|
||||||
(context as Activity).window.attributes = context.window.attributes.also {
|
if (value > 0) {
|
||||||
if (radius > 0) {
|
val windowAttributes = (context as Activity).window.attributes
|
||||||
it.blurBehindRadius = with(density) { radius.dp.toPx().toInt() }
|
windowAttributes.flags =
|
||||||
it.flags = it.flags or WindowManager.LayoutParams.FLAG_BLUR_BEHIND
|
windowAttributes.flags or WindowManager.LayoutParams.FLAG_BLUR_BEHIND
|
||||||
|
context.window.attributes = windowAttributes
|
||||||
|
context.window.setBackgroundBlurRadius(value)
|
||||||
} else {
|
} else {
|
||||||
it.blurBehindRadius = 0
|
val windowAttributes = (context as Activity).window.attributes
|
||||||
it.flags = it.flags and WindowManager.LayoutParams.FLAG_BLUR_BEHIND.inv()
|
windowAttributes.flags =
|
||||||
|
windowAttributes.flags and WindowManager.LayoutParams.FLAG_BLUR_BEHIND.inv()
|
||||||
|
context.window.attributes = windowAttributes
|
||||||
|
context.window.setBackgroundBlurRadius(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -30,6 +30,7 @@
|
|||||||
<item name="windowActionBar">false</item>
|
<item name="windowActionBar">false</item>
|
||||||
<item name="windowNoTitle">true</item>
|
<item name="windowNoTitle">true</item>
|
||||||
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
<item name="android:windowLayoutInDisplayCutoutMode">shortEdges</item>
|
||||||
|
<item name="android:windowIsTranslucent">true</item>
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<style name="DialogTheme" parent="BaseTheme">
|
<style name="DialogTheme" parent="BaseTheme">
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user