Merge "Scaling back the wallpaper + blurring when dragging down on LS" into sc-dev
This commit is contained in:
@@ -1427,7 +1427,7 @@
|
|||||||
|
|
||||||
<!-- Distance that the full shade transition takes in order for media to fully transition to
|
<!-- Distance that the full shade transition takes in order for media to fully transition to
|
||||||
the shade -->
|
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
|
<!-- Maximum overshoot for the topPadding of notifications when transitioning to the full
|
||||||
shade -->
|
shade -->
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ class LockscreenShadeTransitionController @Inject constructor(
|
|||||||
private val displayMetrics: DisplayMetrics,
|
private val displayMetrics: DisplayMetrics,
|
||||||
private val mediaHierarchyManager: MediaHierarchyManager,
|
private val mediaHierarchyManager: MediaHierarchyManager,
|
||||||
private val scrimController: ScrimController,
|
private val scrimController: ScrimController,
|
||||||
|
private val depthController: NotificationShadeDepthController,
|
||||||
private val featureFlags: FeatureFlags,
|
private val featureFlags: FeatureFlags,
|
||||||
private val context: Context,
|
private val context: Context,
|
||||||
configurationController: ConfigurationController,
|
configurationController: ConfigurationController,
|
||||||
@@ -289,6 +290,7 @@ class LockscreenShadeTransitionController @Inject constructor(
|
|||||||
mediaHierarchyManager.setTransitionToFullShadeAmount(mediaAmount)
|
mediaHierarchyManager.setTransitionToFullShadeAmount(mediaAmount)
|
||||||
// Fade out all content only visible on the lockscreen
|
// Fade out all content only visible on the lockscreen
|
||||||
notificationPanelController.setKeyguardOnlyContentAlpha(1.0f - scrimProgress)
|
notificationPanelController.setKeyguardOnlyContentAlpha(1.0f - scrimProgress)
|
||||||
|
depthController.transitionToFullShadeProgress = scrimProgress
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -105,6 +105,16 @@ class NotificationShadeDepthController @Inject constructor(
|
|||||||
scheduleUpdate()
|
scheduleUpdate()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
* When launching an app from the shade, the animations progress should affect how blurry the
|
||||||
* shade is, overriding the expansion amount.
|
* shade is, overriding the expansion amount.
|
||||||
@@ -159,6 +169,7 @@ class NotificationShadeDepthController @Inject constructor(
|
|||||||
var combinedBlur = (shadeSpring.radius * INTERACTION_BLUR_FRACTION +
|
var combinedBlur = (shadeSpring.radius * INTERACTION_BLUR_FRACTION +
|
||||||
normalizedBlurRadius * ANIMATION_BLUR_FRACTION).toInt()
|
normalizedBlurRadius * ANIMATION_BLUR_FRACTION).toInt()
|
||||||
combinedBlur = max(combinedBlur, blurUtils.blurRadiusOfRatio(qsPanelExpansion))
|
combinedBlur = max(combinedBlur, blurUtils.blurRadiusOfRatio(qsPanelExpansion))
|
||||||
|
combinedBlur = max(combinedBlur, blurUtils.blurRadiusOfRatio(transitionToFullShadeProgress))
|
||||||
var shadeRadius = max(combinedBlur, wakeAndUnlockBlurRadius).toFloat()
|
var shadeRadius = max(combinedBlur, wakeAndUnlockBlurRadius).toFloat()
|
||||||
val launchProgress = notificationLaunchAnimationParams?.linearProgress ?: 0f
|
val launchProgress = notificationLaunchAnimationParams?.linearProgress ?: 0f
|
||||||
shadeRadius *= (1f - launchProgress) * (1f - launchProgress)
|
shadeRadius *= (1f - launchProgress) * (1f - launchProgress)
|
||||||
@@ -323,7 +334,7 @@ class NotificationShadeDepthController @Inject constructor(
|
|||||||
velocity: Float,
|
velocity: Float,
|
||||||
direction: Int
|
direction: Int
|
||||||
) {
|
) {
|
||||||
if (isOnKeyguardNotDismissing()) {
|
if (shouldApplyShadeBlur()) {
|
||||||
if (expansion > 0f) {
|
if (expansion > 0f) {
|
||||||
// Blur view if user starts animating in the shade.
|
// Blur view if user starts animating in the shade.
|
||||||
if (isClosed) {
|
if (isClosed) {
|
||||||
@@ -370,7 +381,7 @@ class NotificationShadeDepthController @Inject constructor(
|
|||||||
private fun animateBlur(blur: Boolean, velocity: Float) {
|
private fun animateBlur(blur: Boolean, velocity: Float) {
|
||||||
isBlurred = blur
|
isBlurred = blur
|
||||||
|
|
||||||
val targetBlurNormalized = if (blur && isOnKeyguardNotDismissing()) {
|
val targetBlurNormalized = if (blur && shouldApplyShadeBlur()) {
|
||||||
1f
|
1f
|
||||||
} else {
|
} else {
|
||||||
0f
|
0f
|
||||||
@@ -382,7 +393,7 @@ class NotificationShadeDepthController @Inject constructor(
|
|||||||
|
|
||||||
private fun updateShadeBlur() {
|
private fun updateShadeBlur() {
|
||||||
var newBlur = 0
|
var newBlur = 0
|
||||||
if (isOnKeyguardNotDismissing()) {
|
if (shouldApplyShadeBlur()) {
|
||||||
newBlur = blurUtils.blurRadiusOfRatio(shadeExpansion)
|
newBlur = blurUtils.blurRadiusOfRatio(shadeExpansion)
|
||||||
}
|
}
|
||||||
shadeSpring.animateTo(newBlur)
|
shadeSpring.animateTo(newBlur)
|
||||||
@@ -397,7 +408,11 @@ class NotificationShadeDepthController @Inject constructor(
|
|||||||
choreographer.postFrameCallback(updateBlurCallback)
|
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
|
val state = statusBarStateController.state
|
||||||
return (state == StatusBarState.SHADE || state == StatusBarState.SHADE_LOCKED) &&
|
return (state == StatusBarState.SHADE || state == StatusBarState.SHADE_LOCKED) &&
|
||||||
!keyguardStateController.isKeyguardFadingAway
|
!keyguardStateController.isKeyguardFadingAway
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
@Mock lateinit var notificationPanelController: NotificationPanelViewController
|
@Mock lateinit var notificationPanelController: NotificationPanelViewController
|
||||||
@Mock lateinit var nsslController: NotificationStackScrollLayoutController
|
@Mock lateinit var nsslController: NotificationStackScrollLayoutController
|
||||||
@Mock lateinit var featureFlags: FeatureFlags
|
@Mock lateinit var featureFlags: FeatureFlags
|
||||||
|
@Mock lateinit var depthController: NotificationShadeDepthController
|
||||||
@Mock lateinit var stackscroller: NotificationStackScrollLayout
|
@Mock lateinit var stackscroller: NotificationStackScrollLayout
|
||||||
@Mock lateinit var expandHelperCallback: ExpandHelper.Callback
|
@Mock lateinit var expandHelperCallback: ExpandHelper.Callback
|
||||||
@Mock lateinit var statusbar: StatusBar
|
@Mock lateinit var statusbar: StatusBar
|
||||||
@@ -94,7 +95,8 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
featureFlags = featureFlags,
|
featureFlags = featureFlags,
|
||||||
context = context,
|
context = context,
|
||||||
configurationController = configurationController,
|
configurationController = configurationController,
|
||||||
falsingManager = falsingManager
|
falsingManager = falsingManager,
|
||||||
|
depthController = depthController
|
||||||
)
|
)
|
||||||
whenever(nsslController.view).thenReturn(stackscroller)
|
whenever(nsslController.view).thenReturn(stackscroller)
|
||||||
whenever(nsslController.expandHelperCallback).thenReturn(expandHelperCallback)
|
whenever(nsslController.expandHelperCallback).thenReturn(expandHelperCallback)
|
||||||
@@ -221,5 +223,6 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() {
|
|||||||
verify(notificationPanelController).setTransitionToFullShadeAmount(anyFloat(),
|
verify(notificationPanelController).setTransitionToFullShadeAmount(anyFloat(),
|
||||||
anyBoolean(), anyLong())
|
anyBoolean(), anyLong())
|
||||||
verify(qS).setTransitionToFullShadeAmount(anyFloat(), anyBoolean())
|
verify(qS).setTransitionToFullShadeAmount(anyFloat(), anyBoolean())
|
||||||
|
verify(depthController).transitionToFullShadeProgress = anyFloat()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -184,6 +184,13 @@ class NotificationShadeDepthControllerTest : SysuiTestCase() {
|
|||||||
verify(blurUtils).applyBlur(any(), eq(maxBlur), eq(false))
|
verify(blurUtils).applyBlur(any(), eq(maxBlur), eq(false))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
fun setFullShadeTransition_appliesBlur() {
|
||||||
|
notificationShadeDepthController.transitionToFullShadeProgress = 1f
|
||||||
|
notificationShadeDepthController.updateBlurCallback.doFrame(0)
|
||||||
|
verify(blurUtils).applyBlur(any(), eq(maxBlur), eq(false))
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun updateGlobalDialogVisibility_animatesBlur() {
|
fun updateGlobalDialogVisibility_animatesBlur() {
|
||||||
notificationShadeDepthController.updateGlobalDialogVisibility(0.5f, root)
|
notificationShadeDepthController.updateGlobalDialogVisibility(0.5f, root)
|
||||||
|
|||||||
Reference in New Issue
Block a user