diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
old mode 100644
new mode 100755
index 46004db..2c95374
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
@@ -90,6 +90,7 @@ class NotificationShadeDepthController @Inject constructor(
private var prevTimestamp: Long = -1
private var prevShadeDirection = 0
private var prevShadeVelocity = 0f
+ private var should_blur: Boolean = false
// Only for dumpsys
private var lastAppliedBlur = 0
@@ -184,12 +185,13 @@ class NotificationShadeDepthController @Inject constructor(
val expansionRadius = blurUtils.blurRadiusOfRatio(
ShadeInterpolation.getNotificationScrimAlpha(
if (shouldApplyShadeBlur()) shadeExpansion else 0f))
- var combinedBlur = (expansionRadius * INTERACTION_BLUR_FRACTION +
- animationRadius * ANIMATION_BLUR_FRACTION)
+ var combinedBlur = if(isInKeyGuard() && should_blur) animationRadius else ((expansionRadius * INTERACTION_BLUR_FRACTION +
+ animationRadius * ANIMATION_BLUR_FRACTION))
val qsExpandedRatio = ShadeInterpolation.getNotificationScrimAlpha(qsPanelExpansion) *
shadeExpansion
combinedBlur = max(combinedBlur, blurUtils.blurRadiusOfRatio(qsExpandedRatio))
combinedBlur = max(combinedBlur, blurUtils.blurRadiusOfRatio(transitionToFullShadeProgress))
+
var shadeRadius = max(combinedBlur, wakeAndUnlockBlurRadius)
if (blursDisabledForAppLaunch) {
@@ -198,7 +200,6 @@ class NotificationShadeDepthController @Inject constructor(
var zoomOut = MathUtils.saturate(blurUtils.ratioOfBlurRadius(shadeRadius))
var blur = shadeRadius.toInt()
-
// Make blur be 0 if it is necessary to stop blur effect.
if (scrimsVisible) {
blur = 0
@@ -214,13 +215,16 @@ class NotificationShadeDepthController @Inject constructor(
val opaque = scrimsVisible && !blursDisabledForAppLaunch
Trace.traceCounter(Trace.TRACE_TAG_APP, "shade_blur_radius", blur)
+
blurUtils.applyBlur(blurRoot?.viewRootImpl ?: root.viewRootImpl, blur, opaque)
+
lastAppliedBlur = blur
wallpaperController.setNotificationShadeZoom(zoomOut)
listeners.forEach {
it.onWallpaperZoomOutChanged(zoomOut)
it.onBlurRadiusChanged(blur)
}
+ Log.i(TAG, "start to setBackgroundBlurRadius blur = ${blur}")
notificationShadeWindowController.setBackgroundBlurRadius(blur)
}
@@ -266,9 +270,12 @@ class NotificationShadeDepthController @Inject constructor(
private val statusBarStateCallback = object : StatusBarStateController.StateListener {
override fun onStateChanged(newState: Int) {
- updateShadeAnimationBlur(
- shadeExpansion, prevTracking, prevShadeVelocity, prevShadeDirection)
- scheduleUpdate()
+ Log.d(TAG,"onStateChanged newState == ${newState}");
+ if(newState != StatusBarState.SHADE){
+ updateShadeAnimationBlur(
+ shadeExpansion, prevTracking, prevShadeVelocity, prevShadeDirection)
+ scheduleUpdate()
+ }
}
override fun onDozingChanged(isDozing: Boolean) {
@@ -313,12 +320,29 @@ class NotificationShadeDepthController @Inject constructor(
rawFraction: Float, expanded: Boolean, tracking: Boolean
) {
val timestamp = SystemClock.elapsedRealtimeNanos()
- val expansion = MathUtils.saturate(
- (rawFraction - panelPullDownMinFraction) / (1f - panelPullDownMinFraction))
+
+ var expansion = MathUtils.saturate(
+ (rawFraction - panelPullDownMinFraction) / (1f - panelPullDownMinFraction))
+
+ if(rawFraction == 1f){
+ should_blur = false
+ }else{
+ if(isInKeyGuard()){
+ should_blur = true
+ }else{
+ should_blur = false
+ }
+ }
+
+ if(should_blur){
+ expansion = 1f - MathUtils.saturate(
+ (rawFraction - panelPullDownMinFraction) / (1f - panelPullDownMinFraction))
+ }
+
if (shadeExpansion == expansion && prevTracking == tracking) {
prevTimestamp = timestamp
- return
+ //return
}
var deltaTime = 1f
@@ -350,7 +374,8 @@ class NotificationShadeDepthController @Inject constructor(
velocity: Float,
direction: Int
) {
- if (shouldApplyShadeBlur()) {
+ Log.d(TAG,"updateShadeAnimationBlur start!!");
+ if (should_blur && isInKeyGuard()) {
if (expansion > 0f) {
// Blur view if user starts animating in the shade.
if (isClosed) {
@@ -395,9 +420,11 @@ class NotificationShadeDepthController @Inject constructor(
}
private fun animateBlur(blur: Boolean, velocity: Float) {
+
+ Log.d(TAG," animateBlur start ! blur = ${blur},velocity = ${velocity}");
isBlurred = blur
- val targetBlurNormalized = if (blur && shouldApplyShadeBlur()) {
+ val targetBlurNormalized = if (blur && (shouldApplyShadeBlur() || (isInKeyGuard()&& should_blur ))) {
1f
} else {
0f
@@ -426,6 +453,11 @@ class NotificationShadeDepthController @Inject constructor(
!keyguardStateController.isKeyguardFadingAway
}
+ private fun isInKeyGuard(): Boolean {
+ val state = statusBarStateController.state
+ return state == StatusBarState.KEYGUARD
+ }
+
override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
IndentingPrintWriter(pw, " ").let {
it.println("StatusBarWindowBlurController:")
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
old mode 100644
new mode 100755
index 1077347..3997ce0
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -961,7 +961,12 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
Trace.traceCounter(Trace.TRACE_TAG_APP, getScrimName(scrimView) + "_tint",
Color.alpha(tint));
scrimView.setTint(tint);
- scrimView.setViewAlpha(alpha);
+ //scrimView.setViewAlpha(alpha);
+ if(getScrimName(scrimView).equals("notifications_scrim")){
+ scrimView.setViewAlpha(0f);
+ }else{
+ scrimView.setViewAlpha(alpha);
+ }
} else {
scrim.setAlpha(alpha);
}
mk文件配置blur功能打开
+PRODUCT_PROPERTY_OVERRIDES += \
+ ro.surface_flinger.supports_background_blur=1