安卓12 锁屏、下拉菜单界面 模糊背景

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值