From 33295a482d21b967f9c01764aef9026a545d5174 Mon Sep 17 00:00:00 2001 From: Selim Cinek Date: Fri, 26 Jul 2019 19:49:08 -0700 Subject: [PATCH] Fixed the shadows on the lockscreen for bypass The shadows were clipped before which made them appear very jarringly. They now appear smoother. Also, the shelf wasn't actually hidden when it was fully clipped leading to an ugly remainder on the lockscreen Fixes: 138258095 Test: atest SystemUITests Change-Id: I070c307119572aa41423d1370a55010b2f428be4 --- .../systemui/statusbar/NotificationShelf.java | 4 ++++ .../stack/NotificationStackScrollLayout.java | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java index 4ccd0cd3353ba..99682fcfccbfd 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShelf.java @@ -374,6 +374,10 @@ public class NotificationShelf extends ActivatableNotificationView implements clipTransientViews(); setClipTopAmount(clipTopAmount); + boolean isHidden = getViewState().hidden || clipTopAmount >= getIntrinsicHeight(); + if (mShowNotificationShelf) { + setVisibility(isHidden ? View.INVISIBLE : View.VISIBLE); + } setBackgroundTop(backgroundTop); setFirstElementRoundness(firstElementRoundness); mShelfIcons.setSpeedBumpIndex(mAmbientState.getSpeedBumpIndex()); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index 9e3d74b138faa..4db31d5dee696 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -412,6 +412,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd outline.setRoundRect(mBackgroundAnimationRect, MathUtils.lerp(mCornerRadius / 2.0f, mCornerRadius, xProgress)); + outline.setAlpha(1.0f - mAmbientState.getHideAmount()); } else { ViewOutlineProvider.BACKGROUND.getOutline(view, outline); } @@ -1043,6 +1044,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd requestChildrenUpdate(); updateFirstAndLastBackgroundViews(); updateAlgorithmLayoutMinHeight(); + updateOwnTranslationZ(); } @ShadeViewRefactor(RefactorComponent.STATE_RESOLVER) @@ -4766,6 +4768,20 @@ public class NotificationStackScrollLayout extends ViewGroup implements ScrollAd updateAlgorithmHeightAndPadding(); updateBackgroundDimming(); requestChildrenUpdate(); + updateOwnTranslationZ(); + } + + private void updateOwnTranslationZ() { + // Since we are clipping to the outline we need to make sure that the shadows aren't + // clipped when pulsing + float ownTranslationZ = 0; + if (mKeyguardBypassController.getBypassEnabled() && mAmbientState.isHiddenAtAll()) { + ExpandableView firstChildNotGone = getFirstChildNotGone(); + if (firstChildNotGone != null && firstChildNotGone.showingPulsing()) { + ownTranslationZ = firstChildNotGone.getTranslationZ(); + } + } + setTranslationZ(ownTranslationZ); } private void updateVisibility() {