Merge "Scaling back the wallpaper + blurring when dragging down on LS" into sc-dev
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index f7f7476..05f2f67 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -1427,7 +1427,7 @@
<!-- Distance that the full shade transition takes in order for media to fully transition to
the shade -->
- <dimen name="lockscreen_shade_media_transition_distance">140dp</dimen>
+ <dimen name="lockscreen_shade_media_transition_distance">120dp</dimen>
<!-- Maximum overshoot for the topPadding of notifications when transitioning to the full
shade -->
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
index 4ed376a..4a4e990 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt
@@ -58,6 +58,7 @@
private val displayMetrics: DisplayMetrics,
private val mediaHierarchyManager: MediaHierarchyManager,
private val scrimController: ScrimController,
+ private val depthController: NotificationShadeDepthController,
private val featureFlags: FeatureFlags,
private val context: Context,
configurationController: ConfigurationController,
@@ -289,6 +290,7 @@
mediaHierarchyManager.setTransitionToFullShadeAmount(mediaAmount)
// Fade out all content only visible on the lockscreen
notificationPanelController.setKeyguardOnlyContentAlpha(1.0f - scrimProgress)
+ depthController.transitionToFullShadeProgress = scrimProgress
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
index b7e8bfb..647ab65 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeDepthController.kt
@@ -106,6 +106,16 @@
}
/**
+ * How much we're transitioning to the full shade
+ */
+ var transitionToFullShadeProgress = 0f
+ set(value) {
+ if (field == value) return
+ field = value
+ scheduleUpdate()
+ }
+
+ /**
* When launching an app from the shade, the animations progress should affect how blurry the
* shade is, overriding the expansion amount.
*/
@@ -159,6 +169,7 @@
var combinedBlur = (shadeSpring.radius * INTERACTION_BLUR_FRACTION +
normalizedBlurRadius * ANIMATION_BLUR_FRACTION).toInt()
combinedBlur = max(combinedBlur, blurUtils.blurRadiusOfRatio(qsPanelExpansion))
+ combinedBlur = max(combinedBlur, blurUtils.blurRadiusOfRatio(transitionToFullShadeProgress))
var shadeRadius = max(combinedBlur, wakeAndUnlockBlurRadius).toFloat()
val launchProgress = notificationLaunchAnimationParams?.linearProgress ?: 0f
shadeRadius *= (1f - launchProgress) * (1f - launchProgress)
@@ -323,7 +334,7 @@
velocity: Float,
direction: Int
) {
- if (isOnKeyguardNotDismissing()) {
+ if (shouldApplyShadeBlur()) {
if (expansion > 0f) {
// Blur view if user starts animating in the shade.
if (isClosed) {
@@ -370,7 +381,7 @@
private fun animateBlur(blur: Boolean, velocity: Float) {
isBlurred = blur
- val targetBlurNormalized = if (blur && isOnKeyguardNotDismissing()) {
+ val targetBlurNormalized = if (blur && shouldApplyShadeBlur()) {
1f
} else {
0f
@@ -382,7 +393,7 @@
private fun updateShadeBlur() {
var newBlur = 0
- if (isOnKeyguardNotDismissing()) {
+ if (shouldApplyShadeBlur()) {
newBlur = blurUtils.blurRadiusOfRatio(shadeExpansion)
}
shadeSpring.animateTo(newBlur)
@@ -397,7 +408,11 @@
choreographer.postFrameCallback(updateBlurCallback)
}
- private fun isOnKeyguardNotDismissing(): Boolean {
+ /**
+ * Should blur be applied to the shade currently. This is mainly used to make sure that
+ * on the lockscreen, the wallpaper isn't blurred.
+ */
+ private fun shouldApplyShadeBlur(): Boolean {
val state = statusBarStateController.state
return (state == StatusBarState.SHADE || state == StatusBarState.SHADE_LOCKED) &&
!keyguardStateController.isKeyguardFadingAway
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt
index 18b6c30..18cf1c8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt
@@ -68,6 +68,7 @@
@Mock lateinit var notificationPanelController: NotificationPanelViewController
@Mock lateinit var nsslController: NotificationStackScrollLayoutController
@Mock lateinit var featureFlags: FeatureFlags
+ @Mock lateinit var depthController: NotificationShadeDepthController
@Mock lateinit var stackscroller: NotificationStackScrollLayout
@Mock lateinit var expandHelperCallback: ExpandHelper.Callback
@Mock lateinit var statusbar: StatusBar
@@ -94,7 +95,8 @@
featureFlags = featureFlags,
context = context,
configurationController = configurationController,
- falsingManager = falsingManager
+ falsingManager = falsingManager,
+ depthController = depthController
)
whenever(nsslController.view).thenReturn(stackscroller)
whenever(nsslController.expandHelperCallback).thenReturn(expandHelperCallback)
@@ -221,5 +223,6 @@
verify(notificationPanelController).setTransitionToFullShadeAmount(anyFloat(),
anyBoolean(), anyLong())
verify(qS).setTransitionToFullShadeAmount(anyFloat(), anyBoolean())
+ verify(depthController).transitionToFullShadeProgress = anyFloat()
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt
index 4169cdd..3d6692b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationShadeDepthControllerTest.kt
@@ -185,6 +185,13 @@
}
@Test
+ fun setFullShadeTransition_appliesBlur() {
+ notificationShadeDepthController.transitionToFullShadeProgress = 1f
+ notificationShadeDepthController.updateBlurCallback.doFrame(0)
+ verify(blurUtils).applyBlur(any(), eq(maxBlur), eq(false))
+ }
+
+ @Test
fun updateGlobalDialogVisibility_animatesBlur() {
notificationShadeDepthController.updateGlobalDialogVisibility(0.5f, root)
verify(globalActionsSpring).animateTo(eq(maxBlur / 2), eq(root))