@@ -2,14 +2,10 @@ package de.mm20.launcher2.ui.launcher.helper
|
||||
|
||||
import android.app.Activity
|
||||
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.LaunchedEffect
|
||||
import androidx.compose.runtime.remember
|
||||
import androidx.compose.ui.platform.LocalContext
|
||||
import androidx.compose.ui.platform.LocalDensity
|
||||
import androidx.compose.ui.unit.dp
|
||||
import de.mm20.launcher2.ktx.isAtLeastApiLevel
|
||||
|
||||
@Composable
|
||||
@@ -19,22 +15,19 @@ fun WallpaperBlur(blurRadius: () -> Int) {
|
||||
val density = LocalDensity.current
|
||||
|
||||
val radius = blurRadius()
|
||||
val animatable = remember { Animatable(radius, Int.VectorConverter) }
|
||||
LaunchedEffect(radius) {
|
||||
animatable.animateTo(with(density) { radius.dp.toPx().toInt() }) {
|
||||
if (value > 0) {
|
||||
val windowAttributes = (context as Activity).window.attributes
|
||||
windowAttributes.flags =
|
||||
windowAttributes.flags or WindowManager.LayoutParams.FLAG_BLUR_BEHIND
|
||||
context.window.attributes = windowAttributes
|
||||
context.window.setBackgroundBlurRadius(value)
|
||||
} else {
|
||||
val windowAttributes = (context as Activity).window.attributes
|
||||
windowAttributes.flags =
|
||||
windowAttributes.flags and WindowManager.LayoutParams.FLAG_BLUR_BEHIND.inv()
|
||||
context.window.attributes = windowAttributes
|
||||
context.window.setBackgroundBlurRadius(0)
|
||||
}
|
||||
if (radius > 0) {
|
||||
val windowAttributes = (context as Activity).window.attributes
|
||||
windowAttributes.flags =
|
||||
windowAttributes.flags or WindowManager.LayoutParams.FLAG_BLUR_BEHIND
|
||||
context.window.attributes = windowAttributes
|
||||
context.window.setBackgroundBlurRadius(radius)
|
||||
} else {
|
||||
val windowAttributes = (context as Activity).window.attributes
|
||||
windowAttributes.flags =
|
||||
windowAttributes.flags and WindowManager.LayoutParams.FLAG_BLUR_BEHIND.inv()
|
||||
context.window.attributes = windowAttributes
|
||||
context.window.setBackgroundBlurRadius(0)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1143,17 +1143,8 @@ internal fun LauncherScaffold(
|
||||
}
|
||||
|
||||
if (config.wallpaperBlurRadius > 0.dp) {
|
||||
val wallpaperBlur by animateIntAsState(
|
||||
if (state.currentProgress >= 0.5f && (state.currentComponent?.drawBackground
|
||||
?: config.homeComponent.drawBackground)
|
||||
|| state.currentProgress < 0.5f && config.homeComponent.drawBackground
|
||||
) {
|
||||
8.dp.toPixels().toInt()
|
||||
} else {
|
||||
0
|
||||
}
|
||||
)
|
||||
WallpaperBlur { wallpaperBlur }
|
||||
val maxRadius = config.wallpaperBlurRadius.toPixels()
|
||||
WallpaperBlur { (maxRadius * state.currentProgress).toInt() }
|
||||
}
|
||||
|
||||
if (!config.finishOnBack || state.currentProgress > 0) {
|
||||
|
||||
Reference in New Issue
Block a user